您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用自动连线的Spring Boot监听多个队列?

如何使用自动连线的Spring Boot监听多个队列?

好的,我想出了如何让它侦听多个队列。认为与我的其他解决方案相比,可能存在一些缺点,主要是如果列出的队列不存在,则它不起作用。我最终使用了@RabbitListener完全不同的方法

@Component
public class EventListener {

    private static Logger LOG = LoggerFactory.getLogger(EventListener.class);
    private CountDownLatch latch = new CountDownLatch(1);

    @RabbitListener(queues = "myqueue")
    public void processPaymentMessage(Object message) {
        LOG.info("Message is of type: " + message.getClass().getName());
        if(!(message instanceof byte[])) message = ((Message) message).getBody();
        String content = new String((byte[])message, StandardCharsets.UTF_8);
        LOG.info("Received on myqueue: " + content);
        latch.countDown();
    }

    @RabbitListener(queues = "myotherqueue")
    public void processOrderMessage(Object message) {
        LOG.info("Message is of type: " + message.getClass().getName());
        if(!(message instanceof byte[])) message = ((Message) message).getBody();
        String content = new String((byte[])message, StandardCharsets.UTF_8);           
        LOG.info("Received on myotherqueue: " + content);
        latch.countDown();
    }   
}

在byte []上的整个检查都在其中,因为从命令行发送的消息看起来像什么。否则,它是org.springframework.amqp.core.Message。

Java 2022/1/1 18:20:11 有443人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶