`

spring amqp rabbitmq 学习(三) MessageConverter

阅读更多

spring amqp默认使用的是SimpleMessageConverter,使用的是UTF-8编码,官网原文是这样说的

It handles text-based content, serialized Java objects,and simple byte arrays.

当contentType是以text开头的时候,它会使用UTF-8编码将消息转换为String类型

当contentType是application/x-java-serialized-object时,它会将消息进行解序列化

 

JsonMessageConverter、Jackson2JsonMessageConverter将对象转换为json传递给rabbitmq

 

首先发送信息的applicationContext-send-messageConverter.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:rabbit="http://www.springframework.org/schema/rabbit"
	xsi:schemaLocation="http://www.springframework.org/schema/beans    
      http://www.springframework.org/schema/beans/spring-beans.xsd   
      http://www.springframework.org/schema/context   
      http://www.springframework.org/schema/context/spring-context.xsd   
      http://www.springframework.org/schema/aop   
      http://www.springframework.org/schema/aop/spring-aop.xsd   
      http://www.springframework.org/schema/tx   
      http://www.springframework.org/schema/tx/spring-tx.xsd
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc.xsd
      http://www.springframework.org/schema/rabbit
	  http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd">

	<rabbit:connection-factory id="connectionFactory" host="192.168.1.175" port="5672" channel-cache-size="25" />

	<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" routing-key="simpleSend" message-converter="jackson2JsonMessageConverter"/>

	<rabbit:admin connection-factory="connectionFactory" />
	
	<rabbit:queue name="simpleSend"/>
	
	<bean id="jackson2JsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"/>

</beans>

 主要是增加了jackson2JsonMessageConverter

 

测试发送消息

@Test
	public void testSend() throws InterruptedException {
		
		rabbitTemplate.convertAndSend(new Order(1, "hello"));
	}

 打开rabbitmq管理界面,查看消息内容如下:



 证明发送成功,并且是以json的方式

 

接下来接收消息

applicationContext-receive-messageConverter.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:rabbit="http://www.springframework.org/schema/rabbit"
	xsi:schemaLocation="http://www.springframework.org/schema/beans    
      http://www.springframework.org/schema/beans/spring-beans.xsd   
      http://www.springframework.org/schema/context   
      http://www.springframework.org/schema/context/spring-context.xsd   
      http://www.springframework.org/schema/aop   
      http://www.springframework.org/schema/aop/spring-aop.xsd   
      http://www.springframework.org/schema/tx   
      http://www.springframework.org/schema/tx/spring-tx.xsd
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc.xsd
      http://www.springframework.org/schema/rabbit
	  http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd">

	<rabbit:connection-factory id="connectionFactory" host="192.168.1.175" port="5672" channel-cache-size="25" />

	<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" queue="simpleSend" message-converter="jackson2JsonMessageConverter"/>

	<rabbit:admin connection-factory="connectionFactory" />
	
	<rabbit:queue name="simpleSend"/>
	
	<bean id="jackson2JsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"/>

</beans>

 

测试代码:

@Test
	public void testReceive() throws InterruptedException {
		Object object=rabbitTemplate.receiveAndConvert();
		if(object!=null){
			log.info(object.toString());
			Order order=(Order)object;
			log.info(order.getName());
		}else{
			log.info("no msg!");
		}
	}

 debug一下,成功了

  • 大小: 16.6 KB
分享到:
评论

相关推荐

    Spring AMQP 1.5.3.RELEASE API

    4. **Message转换器**:Spring AMQP提供了一系列内置的消息转换器,如JsonMessageConverter和SimpleMessageConverter,用于将Java对象和AMQP消息之间进行转换。这使得数据可以在不同系统间以标准格式传递。 5. **...

    SpringAMQP-支持使用AMQP的Spring编程模型

    6. **消息转换器**:Spring AMQP 提供了多种内置的消息转换器,如 Jackson2JsonMessageConverter 和 StringMessageConverter,它们可以自动将 Java 对象转换为消息体,反之亦然。这使得数据在消息和业务对象之间轻松...

    spring-amqp 1.5.3源码

    总结来说,Spring AMQP 1.5.3源码的学习能够让你深入了解如何在Spring应用中有效地使用AMQP协议。通过深入研究源码,你可以掌握如何配置和使用关键组件,以及如何设计和实现高效的消息处理流程。这将有助于你在实际...

    spring-amqp,spring-retry,spring-rabbit

    标题中的"spring-amqp"、"spring-retry"和"spring-rabbit"是Spring框架的三个关键组件,它们主要用于构建高效、可靠的分布式系统,尤其是在消息传递和错误处理方面。 1. **Spring AMQP**: Spring AMQP是Spring框架...

    spring集成rabbitmq 通俗易懂的demo

    Spring是Java领域广泛使用的应用框架,而RabbitMQ是一个流行的开源消息代理,它遵循Advanced Message Queuing Protocol (AMQP)标准。集成这两者能够帮助你构建可扩展、可靠且解耦的系统。 首先,让我们理解Spring...

    rabbitmq和spring集成

    1. **添加依赖**:在Spring项目的Maven或Gradle配置文件中,引入RabbitMQ的客户端库和Spring AMQP库。例如,在Maven的pom.xml中,你需要添加如下依赖: ```xml &lt;groupId&gt;com.rabbitmq&lt;/groupId&gt; &lt;artifactId&gt;...

    spring-amqp.zip

    在这个实例中,我们将探讨如何通过Spring AMQP模块来生产和消费消息,以及如何利用RabbitMQ实现日志系统和JSON数据的对接,并讨论自定义确认消息的重要性。 首先,让我们深入了解Spring AMQP。Spring AMQP是Spring...

    spring-boot集成RabbitMQ

    添加 Spring AMQP 依赖到 `pom.xml` 文件,确保 Spring Boot 可以使用 RabbitMQ 相关功能: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-amqp ``` 3. **创建消息实体** ...

    gettingstarted-springamqp:入门 Spring AMQP

    这个教程“gettingstarted-springamqp”旨在帮助初学者快速了解如何在 Spring 应用程序中集成和使用 AMQP。 在开始之前,我们需要理解 AMQP 是一种标准的消息中间件协议,它允许应用程序之间通过消息传递进行异步...

    shabaga-amqp-rabbitmq

    在Java中,Spring AMQP提供了一组丰富的API和抽象,包括RabbitTemplate、Message、MessageConverter等,帮助开发者处理消息的发送和接收。通过Spring AMQP,你可以创建消息生产者(publishers),它们负责发布消息到...

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

    1. **Spring Boot整合RabbitMQ**:Spring Boot通过`spring-boot-starter-amqp`起步依赖提供了与RabbitMQ集成的便利。首先,在`pom.xml`或`build.gradle`文件中引入此依赖,然后配置RabbitMQ服务器的连接信息,包括...

    springboot整合rabbitmq转发mqtt

    &lt;artifactId&gt;spring-boot-starter-amqp ``` 同时,因为我们要处理MQTT协议,所以还需要引入一个支持MQTT的RabbitMQ客户端库,如`paho.mqtt.golang`或者`spring-rabbitmq-mqtt`。这里我们选择`spring-rabbitmq-mqtt...

    springboot集成rabbitMQ

    ### Spring Boot 集成 RabbitMQ 实战指南 #### 一、准备工作 为了实现 Spring Boot 与 RabbitMQ 的集成,我们需要完成以下准备工作: 1. **确保 RabbitMQ 服务正常运行**: - 安装 RabbitMQ 服务器。如果你还...

    spring整合rabbit项目实例

    1. **Spring AMQP库**:这是Spring提供的用于与RabbitMQ交互的API,包含`org.springframework.amqp`包。 2. **RabbitMQ配置**:在Spring的配置文件(如`applicationContext.xml`或`application.yml`)中添加...

    rabbitmq:rabbitmq演示

    4. **消息转换**:Spring AMQP支持MessageConverter,允许在Java对象和RabbitMQ消息之间自动转换。 5. **测试**:编写JUnit测试用例来验证生产者和消费者的正确性,确保消息传递的可靠性。 总结来说,整合Spring与...

    Springboot-rabbitmq.zip

    在Spring Boot的`pom.xml`或`build.gradle`文件中,我们需要引入`spring-boot-starter-amqp`模块,它包含了对RabbitMQ的支持。这使得Spring Boot能够自动配置RabbitMQ的相关组件,简化了开发过程。 接着,项目中...

    springboot-源码解析-个人分析

    此外,`channel`类属于`amqp-client`库,这是RabbitMQ的Java客户端,提供了与RabbitMQ服务器通信的基础API。 `RabbitProperties`类负责读取`spring.rabbitmq.*`的配置属性,这些属性包括RabbitMQ服务器的地址、端口...

    消息中间件-spring-MQ.zip

    消息中间件在IT行业中扮演着至关重要的角色,尤其是在大型分布式系统和微服务架构中。..."spring-MQ-main"项目可能包含了这些概念的实现,通过学习和运行这个项目,你可以更深入地理解和掌握Spring中消息中间件的使用。

    spring-boot-group:springboot集成各种中间件

    在“spring-boot-group:springboot集成各种中间件”的项目中,我们将探讨如何将 Spring Boot 与 RabbitMQ 集成,以实现消息队列的功能。 RabbitMQ 是一个基于 AMQP(Advanced Message Queuing Protocol)的消息代理...

    jms-spring.zip

    通过这个"jms-spring.zip"示例,开发者可以学习如何在Spring应用中配置ActiveMQ,创建消息生产者和消费者,以及处理异常和事务。通过实践这些知识点,能够提升在实际项目中利用JMS解决复杂分布式问题的能力。

Global site tag (gtag.js) - Google Analytics