java - 如何添加一个额外的监听器来监听 Spring AMQP 队列?

标签 java spring rabbitmq spring-amqp

我目前有一个 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 newblog announcement .

关于java - 如何添加一个额外的监听器来监听 Spring AMQP 队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29163025/

相关文章:

Java8 - 如何操作和分配变量?

java - 使用 Spring 自动配置自定义 @Qualifier

Spring security login-processing-url 抛出 405 请求方法 POST 不支持

java - Mapstruct 扩展包含具有相同签名的方法的多个接口(interface)

java - Axon从2.4.3版本迁移到3.1.1有什么具体方法

RabbitMq 兔子 gem vs 运动鞋

java - java中可以显式锁定/解锁对象上的隐式同步锁吗

java - 在 Scala 中创建具有任意类型和映射的三维数组

java - RabbitListener 不是注释类型

java - Jbutton 不切换的卡片布局