RabbitMQ学习系列第二十二篇 高级整合 第四篇MessageListenerAdapter
MessageListenerAdaoter:即消息监听适配器。
代码演示:
在config类中修改:
在SimpleMessageListenerContainer bean中(上一节课代码演示)修改如下:
/** 使用适配器模式 **/
MessageListenerAdapter adapter = new MessageListenerAdapter(new MessageDelegate());
messageListenerContainer.setMessageListener(adapter);
在来看看
MessageDelegate类:
运行测试类:
@Test
public void setRabbitTemplateTest() throws Exception{
//创建消息
MessageProperties messageProperties = new MessageProperties();
messageProperties.getHeaders().put("desc","这里可以添加一些描述信息");
messageProperties.getHeaders().put("mytype","这里是自定义的");
String msessage = "this spring msg";
Message message = new Message(msessage.getBytes(),messageProperties);
//使用模板
rabbitTemplate.convertAndSend("topic001", "spring.amqp", message, new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
System.out.println("------添加额外的信息---------");
message.getMessageProperties().getHeaders().put("desc","这里可以添加一些描述信息。这是修改后的");
message.getMessageProperties().getHeaders().put("attr","哎呦,这是额外的");
return message;
}
});
}
运行效果:
说明我们使用适配器模式成功。
说明:
在MessageDelegate类中
handleMessage方法名称和参数不能修改。方法体我们可以自定义的。
为什么handlerMessage方法不能修改。我们来看看源码:
在源码中,有个DEFAULT_LISTENER_METHOD的静态变量。其值就是handleMessage了。这下知道为什么不能去掉了吧。
如果想要指定自己写的名字。其实也是可以的。
在config中listener在setadapter的时候可以指定默认的方法名称。
如下:
修改MessageDelegate:
运行测试:
我们在控制台可以看到,调用了我们自定义的方法了。
说明,修改默认调用方法成功。
修改消息内容,不使用OBJ数组。使用字符串。
修改MessageDelegate类如下:
修改config.添加messageConverter:
MyMessageConveter类:
执行测试方法:
在控制台上正确的打印出来。说明我们修改消息转换类成功。
本文总结:
下节预告:
我们继续讲解自定义消息转换器
相关推荐
将RabbitMQ与Spring整合,可以方便地在Spring应用中使用消息队列,实现异步通信和任务调度。 本实例主要介绍如何在Spring应用中集成RabbitMQ,构建一个完整的消息传递系统。首先,你需要确保已经安装了RabbitMQ...
RabbitMQ 是一个基于 AMQP 协议的消息队列系统,广泛应用于企业级应用程序中。通过 Docker 安装 RabbitMQ,可以实现轻松快速的部署和管理。本文将指导您如何使用 Docker 安装 RabbitMQ,并整合 Spring Boot 实现消息...
总的来说,本教程将引导你一步步地实现SpringBoot应用与RabbitMQ的整合,从配置RabbitMQ连接,到创建消息生产者和消费者,再到结合数据库操作,实现完整的业务流程。通过这个过程,你将深入理解SpringBoot的自动配置...
综上所述,"java rabbitmq动态注册,监听实现"这个主题涵盖了Spring Boot与RabbitMQ的集成、动态注册消费者、消息监听、异常处理等多个核心知识点。通过合理地运用这些技术,可以构建一个灵活且可靠的分布式消息处理...
RabbitMQ是一个开源的消息队列系统,基于AMQP(Advanced Message Queuing Protocol)协议,广泛应用于分布式系统中,用于处理异步任务、解耦组件以及实现流量控制。在Spring Boot框架中整合RabbitMQ,可以简化开发...
对于RabbitMQ,可以定义消息监听器或者发送消息的方法,根据业务需求进行消息的生产和消费。 6. 测试和优化:编写测试用例,验证Redis和RabbitMQ的集成是否正常工作。根据实际性能和需求,可以调整Redis的缓存策略...
- SpringBoot应用监听RabbitMQ消息,接收到事件后根据业务逻辑同步到ES或Redis缓存。 8. **安全与性能优化** - 为了保证数据一致性,需要考虑幂等性和重试机制。 - 调整Canal和RabbitMQ的配置,如binlog解析频率...
"RabbitMQ整合SSM案例"是一个示例项目,展示了如何将消息队列系统RabbitMQ与Spring、SpringMVC和MyBatis这三大流行Java框架进行整合,同时利用Maven作为项目构建工具。以下是对这个案例涉及的知识点的详细解释: **...
SpringBoot整合RabbitMQ的详细过程 **1.该篇博文首先讲述了交换机和队列之间的绑定关系** ①direct、②fanout、③topic **2.然后讲消息的回调** 四种情况下,确认触发哪个回调函数: ①消息推送到server,但是在...
在Spring Boot应用中整合RabbitMQ,以确保消息100%投递,是一个关键的实践,特别是对于那些需要高可靠性和数据一致性的系统。RabbitMQ是一个流行的开源消息代理,它遵循Advanced Message Queuing Protocol (AMQP)...
3. **声明消息监听器**:通过实现`RabbitListener`注解或配置`SimpleMessageListenerContainer`,定义消息监听器以接收和处理来自RabbitMQ的消息。监听器可以是匿名的,也可以关联到特定的队列。 4. **发送消息**:...
此外,我们还可以利用Spring的注解驱动能力,如`@RabbitListener`来定义消息监听器,简化消息消费的代码。 接着,我们考虑如何与SpringMVC结合。SpringMVC是Spring框架的一个子项目,专门用于处理Web应用的请求和...
在现代Web应用中,实时性需求日益增强,SSM整合WebSocket和RabbitMQ能实现高效的数据同步与异步消息处理。 WebSocket是一种在客户端和服务器之间建立长连接的协议,它允许双向通信,即服务器可以主动向客户端推送...
当我们谈论"SpringBoot整合stream使用rabbitmq作为消息中间件"时,我们涉及的关键技术点主要包括Spring Boot的Stream模块、RabbitMQ的使用以及它们如何协同工作来实现高效的微服务通信。 Spring Boot Stream模块是...
本文将详细介绍如何整合Spring与RabbitMQ,以实现高效的消息传递。 首先,我们要理解Spring对RabbitMQ的支持主要体现在Spring AMQP项目中,它为RabbitMQ提供了一套高级抽象层,使得开发者能够更加便捷地使用...
本篇文章将深入探讨如何使用RabbitMQ实现消息插队,以"多人投资"为例,重点讲解手动投资与自动投资的消息处理流程。 首先,我们需要理解RabbitMQ的基本概念。在RabbitMQ中,生产者(Producer)负责发布消息,消费者...
4. 定义消息监听器:可以创建`@RabbitListener`注解的方法来接收消息,也可以通过`SimpleMessageListenerContainer`配置监听队列。 5. 发送和消费消息:在业务代码中,通过`RabbitTemplate`发送消息到指定的交换机,...
在IT行业中,消息中间件是实现系统间异步通信、解耦合的重要工具,而SpringBoot结合RabbitMQ的整合应用则为开发者提供了便捷的消息处理框架。本文将深入探讨SpringBoot与RabbitMQ的集成,以及如何实现消息的发送、...
SpringBoot整合RabbitMQ是一个常见的后端开发任务,它涉及到分布式消息传递和Java应用程序的集成。RabbitMQ是一个开源的消息代理和队列服务器,而SpringBoot是基于Spring框架的简化版,提供了快速构建应用程序的方式...