Java 如何监视数据库中的新条目?

Java 如何监视数据库中的新条目?,java,database,jdbc,Java,Database,Jdbc,我有一个应用程序解决方案,它由一个用Python编写的web应用程序(使用Django框架)和一个在服务器上运行的Java应用程序组成 web应用程序接收数据并将其存储到数据库队列中。然后,Java应用程序将处理接收到的数据,并将结果存储在数据库中 我的问题是如何通知Java应用程序数据库中有新数据?现在,我似乎必须定期对数据库进行民意调查,以获取新数据。这有什么办法吗 另外,我考虑过使用Jython和Observer模式运行web应用程序,但我的主机不支持servlet。除非数据库特别支持它,

我有一个应用程序解决方案,它由一个用Python编写的web应用程序(使用Django框架)和一个在服务器上运行的Java应用程序组成

web应用程序接收数据并将其存储到数据库队列中。然后,Java应用程序将处理接收到的数据,并将结果存储在数据库中

我的问题是如何通知Java应用程序数据库中有新数据?现在,我似乎必须定期对数据库进行民意调查,以获取新数据。这有什么办法吗


另外,我考虑过使用Jython和Observer模式运行web应用程序,但我的主机不支持servlet。

除非数据库特别支持它,否则轮询是我知道的唯一选项

但是,如果您关心的是Java服务器上的负载,那么您可以有另一台服务器,它只轮询更改,然后在发生更改时通知Java服务器。我不知道这是否比从Java服务器进行简单的轮询更好(不知道具体的问题空间和硬件约束)

希望有帮助



编辑:再次阅读您的语句后,您似乎已经在使用类似消息传递的框架(在java应用程序中使用队列),因此数据库更改可能只是进入队列的另一条消息。如果需要优先级,您可以为消息设置优先级标记,以便在需要处理消息时对其进行处理。

此场景的轮询是通常的方式。感谢您的回复。是的,这是一个消息传递框架,但我现在没有优先权。用户不应该等待太久才能得到响应。如果我在负载较轻时太频繁地进行民意调查,我会觉得我在浪费资源。如果我在负载较高时较少轮询,用户可能会开始感觉延迟。我想我必须找到一个很好的平衡点。如果您担心性能,请尝试优化您的数据库,通常轮询可能会更好。我认为当没有消息时,队列应该是一个空表(不要在那里保留旧记录)。@Damien:没错。我试图达到这一点,但在我的描述中惨遭失败。感谢您在提示中添加:)