架构模块所需的建议
我有一个侦听PORT的PORT侦听器。收到的所有请求都需要排队。我有5个线程来处理队列。同时,所有传入的请求都必须保留,处理相同的响应也是如此。
实施该方法的最佳方法是什么?
请求和响应不能一起保存,因为可能会出现我必须暂时停止处理几个小时的情况。另一种情况可能是此应用程序失败。我们应该能够从持久存储中恢复队列。
另一个问题是我们无法保证队列的大小。因此从db继续获取项目所需的时间应该更少。有时候DB中没有请求。我应该去NOSQL吗?
答案 0 :(得分:1)
基本概念是使用持久队列。
您的请求处理程序(例如,Servlet)应将请求转换为JMS消息并通过JMS队列发送它们。您可以使用ActiveMQ,HornetQ或其他人。接下来,创建一个消息来自该队列的消息的消息驱动Bean。
JMS队列是持久的,因此如果您的服务器发生故障,您将不会丢失任务。可以控制MDB(例如使用JMX或系统属性),这样您就可以随时停止处理,任务将存储在队列中,直到您再次启用MDB。
Here is a complete JMS walk-through from Oracle会一步一步地向您展示如何操作。