2016-04-04 62 views
0

我需要添加一些默認功能,它會在調用實現類的onMessage函數之前從Spring Amqp的Message頭中選擇一些值。在調用onMessage之前添加默認方法,如果MessageListener是Spring Amqp

例如

class TestListener implements MessageListerner { 

public void onMessage(Message message){ 
// some logic 
    } 
} 

從上面的例子,我需要使用消息對象調用一些定製功能的onMessage被調用之前。

是否有任何優雅的方式來實現SpringAmqp

+0

如果你想改變,我不明白的問題,也許背後的原因...收到之前的消息,在發送之前就這樣做。或者,也許你只是想使用像標題交換的東西? – cantSleepNow

+0

需求是在消息獲取onMessage之前在偵聽器端執行任何業務操作。例如。從生產者端設置消息頭中的值say thread name = t1,在Listener端,我將檢索該值並對該t1執行任何其他消息的通用操作,threadname的值可以是t2等。 – Akshat

+0

但'onMessage'只有在收到消息(或者我錯過了某些東西)時才被調用? – cantSleepNow

回答

0

你可以只創建一個在你聽衆一個簡單的包裝類相同。

public void onMessage(Message message) { 
    // process 
    myListener.onMessage(message) 
} 

或者,聽者容器有一個屬性afterReceivePostProcessors正是這種原因...

/** 
* Set {@link MessagePostProcessor}s that will be applied after message reception, before 
* invoking the {@link MessageListener}. Often used to decompress data. Processors are invoked in order, 
* depending on {@code PriorityOrder}, {@code Order} and finally unordered. 
* @param afterReceivePostProcessors the post processor. 
* @since 1.4.2 
*/ 
public void setAfterReceivePostProcessors(MessagePostProcessor... afterReceivePostProcessors) { ... } 
相關問題