rabbitmq实现手动确认

实现逻辑是:spring容器启动时创建监听容器工厂javaBean,工厂的acknowlegemodel属性设置为手动确认,后续通过该容器产生的所有代理对象都需要手动确认,然后通过对象的反射来调用process方法来完成业务逻辑。

但是这里存在一个问题 那就是所有通过该让容器产生的监听器都变成了手动确认,如果我想部分监听器手动确认,部分监听器自动确认呢?

那么新建两个容器工厂javabean,一个设置为自动 一个设置为手动,然后在消费者的@RabbitListener注解指定工厂类

 

这里就要说明用到了spring-messaging.jar  这个jar包是完成spring的消息协议(主要架构是channel(信道)-handle)。 rabbitmq中配置了rabbithandle注解。

消费端定义队列,交换机,路由键

配置rabbit发送消息到服务器的确认

 

增加测试方法,往消息队列服务器发送消息

 

 

 客户端:

将rabbitListenContainfactory创建的每个对象都设置为手动回复以及设置rabbit服务器连接

 

 

 

 

给队列设置监听,并在监听器做完业务逻辑后进行手动确认channel.basicack();

 一个是手动确认,一个是自动确认。

 测试:

 manqueue 需要手动确认 故消息被监听也未返回完成消费  womenqueue则自动确认

 

posted on 2024-06-19 17:27  丶柚子  阅读(5)  评论(0编辑  收藏  举报

导航