对于使用ChannelAwareMessageListener的疑问

来源:5-9 利用MessageListenerAdapter自定义消息监听

慕沐3053333

2021-03-14

        messageListenerContainer.setMessageListener(new ChannelAwareMessageListener() {
            @Override
            public void onMessage(Message message, Channel channel) throws Exception {
                orderMessageService.handleMessage(message.getBody());
                channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
            }
        });

在这节最后提出了假如用以上方法监听队列时,有5个方法5个队列的情况,要去判断队列名是什么,再去调用对应的方法。
我的疑问是怎么知道队列名呢?
另外,如果用作者您的建议,使用MessageListenerAdapter虽然达到监听不同的队列消息使用不同的方法去处理,但是 是不是就不能实现手动ACK了?

写回答

1回答

Moody

2021-03-15

1 message里面有属性可以拿到队列名称。

message.getMessageProperties().getConsumerQueue()

2 应该可以的,能拿到channel就能手动ACK的。

channel.basicAck();
0
6
远远sky
回复
慕移动2077246
重写是可以,但是感觉这个程序设计者不可能没想到这个问题‘让用户自己去重写
2023-05-09
共6条回复

RabbitMQ精讲,提升工程实践能力,培养架构思维

消息驱动架构+订单状态机,二次开发,手写分布式事务框架。

477 学习 · 205 问题

查看课程