实现逻辑是:spring容器启动时创建监听容器工厂javaBean,工厂的acknowlegemodel属性设置为手动确认,后续通过该容器产生的所有代理对象都需要手动确认,然后通过对象的反射来调用process方法来完成业务逻辑。
但是这里存在一个问题 那就是所有通过该让容器产生的监听器都变成了手动确认,如果我想部分监听器手动确认,部分监听器自动确认呢?
那么新建两个容器工厂javabean,一个设置为自动 一个设置为手动,然后在消费者的@RabbitListener注解指定工厂类
这里就要说明用到了spring-messaging.jar 这个jar包是完成spring的消息协议(主要架构是channel(信道)-handle)。 rabbitmq中配置了rabbithandle注解。
消费端定义队列,交换机,路由键
配置rabbit发送消息到服务器的确认
增加测试方法,往消息队列服务器发送消息
客户端:
将rabbitListenContainfactory创建的每个对象都设置为手动回复以及设置rabbit服务器连接
给队列设置监听,并在监听器做完业务逻辑后进行手动确认channel.basicack();
一个是手动确认,一个是自动确认。
测试:
manqueue 需要手动确认 故消息被监听也未返回完成消费 womenqueue则自动确认
标签:容器,监听器,手动,确认,rabbitmq,设置 From: https://www.cnblogs.com/UUUz/p/18256771