`

rabbitMQ高级整合应用第三篇 SimpleMessageListenerContainer

 
阅读更多

 

​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

 

 

 

 

 

 

分享到:
评论

相关推荐

    docker安装rabbitmq并整合springboot

    为了将 Spring Boot 应用程序与 RabbitMQ 进行整合,需要添加相关依赖项和配置文件。 添加依赖项 在 `pom.xml` 文件中添加以下依赖项: ```xml <!-- 整合 RabbitMQ --> <groupId>org.springframework.boot ...

    RabbitMq与Spring整合实例

    将RabbitMQ与Spring整合,可以方便地在Spring应用中使用消息队列,实现异步通信和任务调度。 本实例主要介绍如何在Spring应用中集成RabbitMQ,构建一个完整的消息传递系统。首先,你需要确保已经安装了RabbitMQ...

    1 SpringBoot整合RabbitMQ-整合配置篇-源码数据库

    在本教程中,我们将深入探讨如何将SpringBoot与RabbitMQ进行整合,特别是在配置和实战应用方面。SpringBoot是一款流行的Java开发框架,它简化了Spring应用程序的创建过程,而RabbitMQ则是一款广泛使用的消息中间件,...

    RabbitMq整合使用

    通过以上步骤,你已经成功地在Spring Boot应用中整合了RabbitMQ。这使你的系统能够通过消息传递实现组件间的解耦,并能处理异步任务。理解RabbitMQ的配置、交换机、队列和消息确认机制,对于构建高效、可靠的分布式...

    SpringBoot+redis+RabbitMq整合实例

    在IT行业中,Spring Boot、Redis和RabbitMQ是三个非常重要的技术组件,它们分别用于简化Java应用程序开发、数据缓存和消息队列处理。本文将详细介绍如何将这三者整合在一起,以构建一个高效、可扩展的应用系统。 ...

    SpringBoot整合RabbitMQ.zip

    SpringBoot整合RabbitMQ的详细过程 **1.该篇博文首先讲述了交换机和队列之间的绑定关系** ①direct、②fanout、③topic **2.然后讲消息的回调** 四种情况下,确认触发哪个回调函数: ①消息推送到server,但是在...

    RabbitMQ与SpringMVC集成

    1. 引入依赖:在项目中添加RabbitMQ的Spring整合依赖,如`spring-amqp`库。 2. 配置RabbitMQ:在Spring的配置文件中,定义连接工厂、信道配置以及RabbitMQ服务器的相关属性。 3. 创建消息模板:使用`RabbitTemplate`...

    RabbitMq整合SSM案例

    "RabbitMQ整合SSM案例"是一个示例项目,展示了如何将消息队列系统RabbitMQ与Spring、SpringMVC和MyBatis这三大流行Java框架进行整合,同时利用Maven作为项目构建工具。以下是对这个案例涉及的知识点的详细解释: **...

    Springboot整合RabbitMQ最简单demo

    Springboot整合RabbitMQ最简单demo,适用于springcloud项目,作为消息总线适用,需要安装RabbitMQ,Mac linux可以使用命令行一键安装,在项目配置文件配置好端口即可(已默认配置),启动项目访问8080端口,参数见controller.

    RabbitMQ整合spring示例代码(java maven)

    3. **声明消息监听器**:通过实现`RabbitListener`注解或配置`SimpleMessageListenerContainer`,定义消息监听器以接收和处理来自RabbitMQ的消息。监听器可以是匿名的,也可以关联到特定的队列。 4. **发送消息**:...

    springBoot整合RabbitMQ案例

    SpringBoot整合RabbitMQ是一个常见的后端开发任务,它涉及到分布式消息传递和Java应用程序的集成。RabbitMQ是一个开源的消息代理和队列服务器,而SpringBoot是基于Spring框架的简化版,提供了快速构建应用程序的方式...

    RabbitMQ+SSM整合

    本项目是关于如何将RabbitMQ与Spring、SpringMVC和Mybatis这三大流行框架进行整合,实现一套完整的数据增删改查功能。 首先,我们需要了解RabbitMQ的基本概念。RabbitMQ基于AMQP(Advanced Message Queuing ...

    服务异步通信 - RabbitMQ的高级特性 - 高级篇相关软件

    3. **工作队列(Work Queues)**:这是RabbitMQ最常见的一种应用场景,多个消费者可以并发地从同一队列中取出任务进行处理,从而实现负载均衡和故障容错。 4. **持久化(Persistence)**:RabbitMQ支持消息和队列的...

    rabbitmq整合项目.rtf

    rabbitmq整合项目

    spring整合rabbitmq的实例

    在这里,我们使用`convertAndSend`方法发送消息,第一个参数是交换机名称,第二个是路由键,第三个是消息内容。 最后,创建消息消费者。定义一个带有`@RabbitListener`注解的方法来监听特定队列: ```java @...

    ssm整合webSocket、rabbitMq

    在现代Web应用中,实时性需求日益增强,SSM整合WebSocket和RabbitMQ能实现高效的数据同步与异步消息处理。 WebSocket是一种在客户端和服务器之间建立长连接的协议,它允许双向通信,即服务器可以主动向客户端推送...

    rabbitmq高级集群搭建

    rabbitmq高级集群搭建

    RabbitMQ基本概念与应用

    ### RabbitMQ基本概念与应用 #### 一、引言 RabbitMQ作为一款高效且可靠的开源消息代理系统,被广泛应用于各种应用场景之中,比如数据传输、非阻塞操作、推送通知、发布与订阅以及异步处理等场景。本文旨在深入...

Global site tag (gtag.js) - Google Analytics