我目前有一个 FooListener
监听包含 Foo
消息的队列。如何添加另一个 BarListener
类来监听同一队列中的 Bar
消息?
我的 RabbitMQ 当前配置如下:
@Configuration
public class RabbitMQConfig {
@Bean
public MessageListenerContainer messageListenerContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueues(workQueue());
container.setMessageListener(new MessageListenerAdapter(fooListener(), new JsonMessageConverter()));
container.setDefaultRequeueRejected(false);
return container;
}
}
最佳答案
目前没有内置支持根据负载类型路由到不同的监听器。
您可以编写一个简单的监听器包装器...
public void handleMessage(Object payload) {
if (payload instanceof Foo) {
this.fooListener.handleMessage((Foo) payload);
}
else if (payload instanceof Bar) {
this.barListener.handleMessage((Bar) payload);
}
else {
// unexpected payload type
}
}
编辑:
Spring AMQP 1.5(目前处于里程碑 1 - 1.5.0.M1)现在支持此功能;见what's new和 blog announcement .
关于java - 如何添加一个额外的监听器来监听 Spring AMQP 队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29163025/