几个自动配置类:

1.RabbitAutoConfiguration
2.有自动配置了连接工厂 ConnectionFactory
3.RabbitProperties 封装了RabbitMQ的配置
4.RabiitTemlate:给RabbitMQ发送和接收消息
5.AmqpAdmin:RabbitMQ系统管理功能组件(可以创建exchange,queue,Binding)
6.@EnableRabbit+@RabbitListener 监听消息队列的内容

  • 配置文件写法:
spring.rabbitmq.host=192.168.0.113
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
#端口5672默认可以不写
#spring.rabbitmq.virtual-host= 默认/可以不写
  • 测试类:
@SpringBootTest
public class Springboot002AmqpApplicationTests { @Autowired
RabbitTemplate rabbitTemplate; /*
1.单播(点对点)
public Message(byte[] body, MessageProperties messageProperties) {
this.body = body;
this.messageProperties = messageProperties;
}
* */
@Test
public void contextLoads() {
//交换器,路邮件,消息
//Message需要自己构造一个,定一消息体内容和消息头
//rabbitTemplate.send(exchange,routekey,message); //转法并发送,Object默认当成消息体,只需要传入要发送的对象,自动序列化保存发送给rabbitmq
//rabbitTemplate.convertAndSend(exchange,routKey,object);
Map <String ,Object>map = new HashMap<>();
map.put("msg","这是第一个消息");
map.put("data", Arrays.asList("helloWorld","123",true));
//对象被默认序列化后发送出去
//rabbitTemplate.convertAndSend("exchange.direct","springbootTest.news",map);
//json发送MyAMQPConfig类配置
rabbitTemplate.convertAndSend("exchange.direct","springbootTest.news",new Book("西游记","吴承恩"));
} //接收
@Test
public void receive(){
Object o = rabbitTemplate.receiveAndConvert("springbootTest.news");
//打印数据类型
System.out.println(o.getClass());
System.out.println(o);
}
/*
* 1.单播
* */
@Test
public void setOneMsg(){
rabbitTemplate.convertAndSend("exchange.direct","springbootTest",new Book("水浒传","单播")); /*
* 2.广播
* */
@Test
public void setAllMsg(){
rabbitTemplate.convertAndSend("exchange.fanout","",new Book("红楼梦","曹雪芹")); }
发送消息时如不配置序列化方法则按照java默认序列化机制,则会造成发送编码不符合
解决方法:
json发送MyAMQPConfig类配置
@Configuration
public class MyAMQPConfig {
@Bean
public MessageConverter messageConverter(){
return new Jackson2JsonMessageConverter();
}
}

RabbitMQ代码操作之发消息和序列化机制的更多相关文章

  1. RabbitMQ代码操作之AmqpAdmin和RabbitListener

    AmqpAdmin:RabbitMQ系统管理功能组件(可以创建exchange,queue,Binding) @Test public void createExchange(){ //创建交换器 / ...

  2. Akka源码分析-Actor发消息

    前面两篇文章简单介绍了ActorSystem.actor以及dispatcher和mailbox的创建,下面我们就来看一下actor发消息的内部机制. val system = ActorSystem ...

  3. 由浅入深了解Thrift之服务模型和序列化机制

    一.Thrift介绍 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎.其允许你定义一个简单的定义文件中的数据类型和服务接口.以作为输入文件,编 ...

  4. 一行代码设置TForm颜色的前世今生(属性赋值引起函数调用,然后发消息实现改变显示效果),TForm的初始颜色在dfm中设置了clBtnFace色

    来自万一的帖子:http://www.cnblogs.com/del/archive/2008/04/27/1173658.html的确做到了一行代码设置TForm控件的颜色(一点感想:Delphi程 ...

  5. 【RabbitMQ学习记录】- 消息队列存储机制源码分析

    本文来自 网易云社区 . RabbitMQ在金融系统,OpenStack内部组件通信和通信领域应用广泛,它部署简单,管理界面内容丰富使用十分方便.笔者最近在研究RabbitMQ部署运维和代码架构,本篇 ...

  6. SpringCloud(六) - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)

    1.安装erlang语言环境 1.1 创建 erlang安装目录 mkdir erlang 1.2 上传解压压缩包 上传到: /root/ 解压缩# tar -zxvf otp_src_22.0.ta ...

  7. ActiveMQ发消息和收消息

    来自:http://blog.163.com/chengwei_1104/blog/static/53645274201382315625329/ ActiveMQ 是Apache出品,最流行的,能力 ...

  8. Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解

    MainActivity如下: package cc.c; import android.app.Activity; import android.os.Bundle; import android. ...

  9. vbs脚本实现qq定时发消息(初级)

    vbs脚本实现QQ消息定时发送 目标 批处理又称为批处理脚本,强大的强大功能可以高效得实现很多功能,例如批量更改文件格式,批量进行文件读写,今天我们的目标是用vbs脚本编写可以发送qq消息的脚本,并利 ...

随机推荐

  1. 跳一跳外挂的python实现--OpenCV步步精深

    去我的个人网站看看吧 http://opencvblog.com/跳一跳外挂-python实现/ 都在这里啦

  2. ES6 学习 -- Class

    Class的基本语法(1)// 定义类class Point { test() { console.log("hello test"); }}通过 new 定义好的类即可生成一个类 ...

  3. Apache2.2+tomcat7 负载均衡配置

    思路及步骤:第一步配置tomcat,第二步配置apache 服务器,第三步添加项目到tomcat中并测试 第一步配置tomcat 1,打开 第一个tomcat,conf文件夹下的server.xml ...

  4. 安装rubygems

    转载 http://blog.csdn.net/huanghai200911/article/details/51251472 1,下载rubygems-2.4.8.tar包,下载地址:https:/ ...

  5. 调整VMware中虚拟机中Linux系统屏幕分辨率的问题

    即:解决显示底部菜单栏以及安装软件中没有下一步的按钮用Tab键的问题 右击打开终端,输入以下命令: Xrandr Xrandr -s  1280x720 (自己选择一个分辨率即可) 原文:https: ...

  6. 关于FR4板一些重复的数据

    介电常数:4.2-4.7 信号传输速度:表层 140~170 ps/inch, 内层 180 ps/inch

  7. String 详解

    String String对象不可变,当对象创建完毕之后,如果内容改变则会创建一个新的String对象,返回到原地址中. 不可变优点: 多线程安全. 节省空间,提高效率. 源码: public fin ...

  8. xml 单例类

    MD5JSON.h #pragma once #include "include/json/json.h" #include "include/md5/md5.h&quo ...

  9. 2019亚太内容分发大会,阿里云获CDN领袖奖、技术突破奖

    近日,亚太CDN产业联盟主办的2019亚太内容分发大会在上海召开.本次大会以"5G分发"为主题,集结了CDN领域近千名行业领袖.专家参与.在会上,阿里云斩获“CDN领袖奖”.“技术 ...

  10. thinkphp 页面Trace信息

    调试模式并不能完全满足我们调试的需要,有时候我们需要手动的输出一些调试信息.除了本身可以借助一些开发工具进行调试外,ThinkPHP还提供了一些内置的调试工具和函数.例如,页面Trace功能就是Thi ...