您好我遇到过两种方式接收来自ActiveMQ
经纪商的消息:
(下面提到的所有类别都在javax.jmx package
)
1)调用返回消息的MessageConsumer.receive()
2)为MessageConsumer注册MessageListener
,并且监听器有onMessage()
我可以问这两种方式下真正发生的事情吗?
这与拉/推,同步/异步有关吗?
答案 0 :(得分:2)
你的猜测是正确的。
messageConsumer.receive()
本质上是同步。它等待直到从队列中收到消息。所以有时候你不想无限期等待,所以这个方法有超时功能:
messageConsumer.receive(3000)
HERE 3000
是超时(以毫秒为单位)。这种与经纪人沟通的方式被称为 request-reply 范例。事实上,消费者拉。
实施MessageListener
本质上是异步。消费者推送。