rabbitMQ精讲系列第二十一篇 高级整合应用第三篇 SimpleMessageListenerContainer
今天主要内容:
SimpleMessageListenerContainer对象
SimpleMessageListenerContainer:简单消息监听容器。
这个类非常的强大,我们可以对它进行很多的设置,对应消费者的配置项,这个类都可以满足的。
监听队列(多个队列)、自动启动、自动声明功能
设置事务特性、事务管理器、事务属性、事务容量(并发)、是否开启事务、回滚消息等
设置消费者数量、最大最小数量、批量消费
设置消息确认和自动确认模式、是否重回队列、异常捕获handler函数
主要:SimpleMessageListenerContainer可以进行动态设置。比如在运行中的应用可以动态的修改其消费者数量的大小、接收消息的模式等
很多基于RabbitMq的自制定化后端管理台在进行动态设置的是,也是根据这个特性去实现的
思考:SimpleMessageListenerContainer为什么可以动态感知配置变化?
代码示例:
在rabbitMQConfig类中添加SimpleMessageListenerContainer的bean.在simpleMessageListenerContainer可以设置很多东西。如下图:
设置签收模式
@Bean public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory){ SimpleMessageListenerContainer messageListenerContainer = new SimpleMessageListenerContainer(connectionFactory); //添加队列监听 messageListenerContainer.setQueues(queue001(), queue002(), queue003(), queue_image(), queue_pdf()); //设置监听数据 messageListenerContainer.setConcurrentConsumers(1); messageListenerContainer.setMaxConcurrentConsumers(5); //设置是否重回队列 messageListenerContainer.setDefaultRequeueRejected(false); //设置签收模式 为自动签收 messageListenerContainer.setAcknowledgeMode(AcknowledgeMode.AUTO); //设置客户端tage messageListenerContainer.setConsumerTagStrategy(new ConsumerTagStrategy() { @Override public String createConsumerTag(String queue) { return queue+"_"+ UUID.randomUUID().toString(); } }); //消息 messageListenerContainer.setMessageListener(new ChannelAwareMessageListener() { @Override public void onMessage(Message message, Channel channel) throws Exception { String msg = new String (message.getBody(),"UTF-8"); System.out.println("---------->>消息为:"+msg); } }); return messageListenerContainer;
} |
启动代码,我们从页面管控台查看:
点进去查看:
我们可以看到,我们自定义的consumer tag已经生效了
进行发送消息测试。
在测试类中,运行发送消息的代码:
运行之后,我们在控制台可以看到,打印出三条数据。也就是我们在RabbitMqConfig类中设置的。如下图:
说明监听消息成功。
经过以上两个测试,我们的simpleMessageListenerContainer设置成功了。
相关代码以更新到git上了。
下节预告:MessageListenerAdapter
相关推荐
为了将 Spring Boot 应用程序与 RabbitMQ 进行整合,需要添加相关依赖项和配置文件。 添加依赖项 在 `pom.xml` 文件中添加以下依赖项: ```xml <!-- 整合 RabbitMQ --> <groupId>org.springframework.boot ...
将RabbitMQ与Spring整合,可以方便地在Spring应用中使用消息队列,实现异步通信和任务调度。 本实例主要介绍如何在Spring应用中集成RabbitMQ,构建一个完整的消息传递系统。首先,你需要确保已经安装了RabbitMQ...
在本教程中,我们将深入探讨如何将SpringBoot与RabbitMQ进行整合,特别是在配置和实战应用方面。SpringBoot是一款流行的Java开发框架,它简化了Spring应用程序的创建过程,而RabbitMQ则是一款广泛使用的消息中间件,...
通过以上步骤,你已经成功地在Spring Boot应用中整合了RabbitMQ。这使你的系统能够通过消息传递实现组件间的解耦,并能处理异步任务。理解RabbitMQ的配置、交换机、队列和消息确认机制,对于构建高效、可靠的分布式...
在IT行业中,Spring Boot、Redis和RabbitMQ是三个非常重要的技术组件,它们分别用于简化Java应用程序开发、数据缓存和消息队列处理。本文将详细介绍如何将这三者整合在一起,以构建一个高效、可扩展的应用系统。 ...
SpringBoot整合RabbitMQ的详细过程 **1.该篇博文首先讲述了交换机和队列之间的绑定关系** ①direct、②fanout、③topic **2.然后讲消息的回调** 四种情况下,确认触发哪个回调函数: ①消息推送到server,但是在...
1. 引入依赖:在项目中添加RabbitMQ的Spring整合依赖,如`spring-amqp`库。 2. 配置RabbitMQ:在Spring的配置文件中,定义连接工厂、信道配置以及RabbitMQ服务器的相关属性。 3. 创建消息模板:使用`RabbitTemplate`...
"RabbitMQ整合SSM案例"是一个示例项目,展示了如何将消息队列系统RabbitMQ与Spring、SpringMVC和MyBatis这三大流行Java框架进行整合,同时利用Maven作为项目构建工具。以下是对这个案例涉及的知识点的详细解释: **...
Springboot整合RabbitMQ最简单demo,适用于springcloud项目,作为消息总线适用,需要安装RabbitMQ,Mac linux可以使用命令行一键安装,在项目配置文件配置好端口即可(已默认配置),启动项目访问8080端口,参数见controller.
3. **声明消息监听器**:通过实现`RabbitListener`注解或配置`SimpleMessageListenerContainer`,定义消息监听器以接收和处理来自RabbitMQ的消息。监听器可以是匿名的,也可以关联到特定的队列。 4. **发送消息**:...
SpringBoot整合RabbitMQ是一个常见的后端开发任务,它涉及到分布式消息传递和Java应用程序的集成。RabbitMQ是一个开源的消息代理和队列服务器,而SpringBoot是基于Spring框架的简化版,提供了快速构建应用程序的方式...
本项目是关于如何将RabbitMQ与Spring、SpringMVC和Mybatis这三大流行框架进行整合,实现一套完整的数据增删改查功能。 首先,我们需要了解RabbitMQ的基本概念。RabbitMQ基于AMQP(Advanced Message Queuing ...
3. **工作队列(Work Queues)**:这是RabbitMQ最常见的一种应用场景,多个消费者可以并发地从同一队列中取出任务进行处理,从而实现负载均衡和故障容错。 4. **持久化(Persistence)**:RabbitMQ支持消息和队列的...
rabbitmq整合项目
在这里,我们使用`convertAndSend`方法发送消息,第一个参数是交换机名称,第二个是路由键,第三个是消息内容。 最后,创建消息消费者。定义一个带有`@RabbitListener`注解的方法来监听特定队列: ```java @...
在现代Web应用中,实时性需求日益增强,SSM整合WebSocket和RabbitMQ能实现高效的数据同步与异步消息处理。 WebSocket是一种在客户端和服务器之间建立长连接的协议,它允许双向通信,即服务器可以主动向客户端推送...
rabbitmq高级集群搭建
### RabbitMQ基本概念与应用 #### 一、引言 RabbitMQ作为一款高效且可靠的开源消息代理系统,被广泛应用于各种应用场景之中,比如数据传输、非阻塞操作、推送通知、发布与订阅以及异步处理等场景。本文旨在深入...