ActiveMQ / HornetQ p2p是基于轮询或基于推送的模型

时间:2014-08-23 05:33:41

标签: java jms activemq hornetq

在ActiveMQ / HornetQ中使用(spring或ejb)消息侦听器容器接收消息时,场景背后会发生什么?

  1. 经纪人是否向消费者推送消息?如果是这样,消费者如何注册 他们自己经纪人?
  2. 或者消费者在队列中轮询消息?如果是这样,为什么每个队列(在管理控制台中)都有一个消费者编号字段,显示队列的已注册消费者数量?
  3. O' Reilly书中的This link说:

      

    p2p消息传递模型传统上一直是拉动式的   基于轮询的模型,从队列中请求消息   而不是自动推送到客户端。 ( JMS   规范没有具体说明p2p和pub / sub的方式   必须实施模型。任何一方都可以使用推或拉,但是   至少概念上pub / sub是push而p2p是pull)。

1 个答案:

答案 0 :(得分:3)

您没有说明协议,因为ActiveMQ和HornetQ是多协议代理,确切的实现可能会有所不同。但是,除了基于HTTP / REST的协议之外,大多数协议都会将消息推送到客户端。如果没有线路协议级别的推送策略,则无法实现高吞吐量。

应用程序级API允许“轮询”,即JMS MessageConsumer.receive,但这实际上只是“在推送消息之前休眠”机制。