如果是Spring Amqp的MessageListener,则在调用onMessage之前添加默认方法

时间:2016-04-04 10:46:53

标签: rabbitmq spring-amqp spring-rabbitmq

我需要添加一些默认功能,它会在调用onMessage实现类的函数之前从Spring Amqp的Message头中选取一些值。

例如

class TestListener implements MessageListerner {

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

从上面的示例中,我需要在调用onMessage之前使用Message对象调用一些自定义功能。

在SpringAmqp

中是否有任何优雅的方法可以实现相同的目标

1 个答案:

答案 0 :(得分: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) { ... }