繁体   English   中英

Java中的多线程持久队列

[英]multi threaded persistent queue in java

架构模块所需的建议

我有一个侦听PORT的PORT Listener。 所有收到的请求都需要排队。 我有5个线程来处理队列。 同时,所有传入的请求都必须保留,处理相同的响应也必须保留。

最好的实现方法是什么?

由于某些情况下我不得不暂时停止处理几个小时,因此请求和响应无法持久保存。 另一种情况可能是此应用程序失败。 我们应该能够从持久性存储中恢复队列。

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

基本概念是使用持久队列。

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

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

这是Oracle的完整JMS演练 ,将逐步向您展示如何做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM