繁体   English   中英

自定义轮询与JMS MessageListener

[英]Custom polling vs JMS MessageListener

对不起,如果是重复的问题。

我有一个遗留的Web应用程序,它使用队列(是的。普通的Java队列)和自定义轮询(每500毫秒)。 将调用REST Web服务(/ message),如果有任何其他空字符串,它将返回消息。

我的需求:如果队列中有任何消息可用,则在实时中,客户端应该收到消息。 所以我可以节省500毫秒。

从当前的方法转向JMS有什么好处吗? 从这个链接JMS MessageConsumer的messageListener进行推或拉? 看来,MessageListener(进程是异步的)使用的轮询与当前的方法没有什么不同。

如果它是基于供应商的,HornetQ / ActiveMQ如何支持MessageListener?

编辑:队列用于集成两个系统。 一个Web应用程序和standlone java程序。

Async MessageListener使用基于推送的模型实现。 在ActiveMQ中,代理根据其设置的预取值向客户端发送许多消息,以便消息可以使用。 这是否有助于您的特定用例是您需要自己回答的问题。

接收或MessageListener将是异步的,并在收到消息后立即调用。

您可以控制客户端的预取大小。

现在,如果你需要的是每500毫秒避免一次极化延迟,那么使用队列系统可能是一种过度杀伤力? 使用java.util.Queue(或任何其他子类)是完美的。

如果只需要阻止java.util.Queue的一个元素可用,并且你不需要分布式消息传递,持久性或类似的东西就可以简单地使用BlockingDequeue,一旦你收到消息,你的线程就会解除阻塞..

看这个:

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingDeque.html

暂无
暂无

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

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