java中的多线程持久队列

java中的多线程持久队列,java,sql,multithreading,nosql,queue,Java,Sql,Multithreading,Nosql,Queue,需要关于架构模块的建议 我有一个监听端口的端口侦听器。所有收到的请求都需要排队。我有5个线程来处理队列。同时,所有传入的请求都必须持久化,处理相同请求的响应也必须持久化 实现这一点的最佳方法是什么 请求和响应不能保持在一起,因为有时我必须暂时停止处理几个小时。另一种情况可能是此应用程序失败。我们应该能够从持久存储恢复队列 另一个问题是我们不能保证队列的大小。因此,从数据库连续获取项所需的时间应该更少。有时数据库中可能没有请求。我应该使用NOSQL吗?基本概念是使用持久队列 您的请求处理程序(例如

需要关于架构模块的建议

我有一个监听端口的端口侦听器。所有收到的请求都需要排队。我有5个线程来处理队列。同时,所有传入的请求都必须持久化,处理相同请求的响应也必须持久化

实现这一点的最佳方法是什么

请求和响应不能保持在一起,因为有时我必须暂时停止处理几个小时。另一种情况可能是此应用程序失败。我们应该能够从持久存储恢复队列


另一个问题是我们不能保证队列的大小。因此,从数据库连续获取项所需的时间应该更少。有时数据库中可能没有请求。我应该使用NOSQL吗?

基本概念是使用持久队列

您的请求处理程序(例如Servlet)应该将请求转换为JMS消息,并通过JMS队列发送它们。您可以使用,或其他。接下来,创建一个消息驱动Bean,它使用来自该队列的消息

JMS队列是持久性的,因此如果服务器发生故障,您将不会丢失任务。可以控制MDB(例如使用JMX或系统属性),以便您可以随时停止处理,任务将存储在队列中,直到您再次启用MDB


这会一步一步地告诉你怎么做。

我不知道我是否正确理解了你的问题。。。您似乎想暂时将请求排队,然后处理它们,对吗?一个真正的Java排队框架肯定是最好的?例如ActiveMQ?@grahamrb是的,这正是我想要的。有时我可能希望应用程序运行,但不进行任何处理。所以队列大小会增加。我该怎么办