2016-09-15 20 views
0

我在SpringAMQP中有多個MessagePostProcessor,我使用SimpleMessageListenerContainer.setAfterReceivePostProcessors API設置它們,現在我的查詢是按照我提到的順序調用這些MessagePostProcessors。如何獲得在SimpleMessageListenerContainer中的不同MessagePostProcessor的排序

Pseoudo代碼

SimpleMessageListenerContainer container = // api returing SimpleMessageListenerContainer object 
container.setAfterReceivePostProcessors(new MessagePostProcessor[] { 
       messagePostProcessors1 , messagePostProcessors2}); 

所以春天在什麼AMQP呼叫messagePostProcessors1順序遵循messagePostProcessors2或做它隨機選擇的一樣嗎?

如果隨機選擇是存在的,我們可以訂購相同即messagePostProcessors2總是被messagePostProcessors1

回答

1

Akshat後調用的任何方式,順序是根據其在processor.Quoting設置文檔這裏的順序。當我看到處理器的具體實現時,我發現有一個setOrder方法(我認爲命令的表單界面)。可能會在你的消息發佈處理器中設置該功能。

公共無效setAfterReceivePostProcessors(MessagePostProcessor ... afterReceivePostProcessors)

設置一個MessagePostProcessor,這將是一個 通道#basicGet(後立即調用)和任何消息之前進行 轉換。可用於操作如 解壓處理器按順序調用,具體取決於 PriorityOrder,Order和最後無序。

+0

你不必執行'Ordered' - 後處理程序,不會在任何後處理(並按順序傳入) - 所以... 1然後... 2在這種情況下。 –