2013-11-15 142 views
2

您好我所遇到的兩種方法用於從ActiveMQ經紀人接收到消息的方法: (所有歸類下面提到處於javax.jmx packageActiveMQ的不同,用於接收消息

1)調用MessageConsumer.receive()其它返回一個消息

2)註冊了一個的MessageConsumer MessageListener,與聽者有onMessage()

請問這兩種方式在引擎蓋下到底發生了什麼?

這是否與拉/推,同步/異步

回答

2

你的猜測是正確的。

messageConsumer.receive()同步性質。它等待,直到收到來自隊列的消息。所以有時你不想等待無限,所以該方法有超時功能: messageConsumer.receive(3000)

這裏3000是以毫秒爲單位的超時。這種與經紀人溝通的方式被稱爲請求回覆範式。它實際上是爲消費者。

並執行MessageListener異步性質。對消費者而言,是