springboot消息之整合rabbitmq
时间:2022-07-23
本文章向大家介绍springboot消息之整合rabbitmq,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、新建一个springboot项目,选择web、rabbitmq
2、rabbitmq相关信息
(1)RabbitAutoConfiguration
(2)自动配置了ConnectionFactory
(3)RabbitProperties封装了RabbitMQ配置
(4)RabbitTemplate:给RabbitMQ发送和接受消息
(5)AmqAdmin:RabbitMQ系统管理功能组件
3、在application.properties中配置rabbitmq相关
spring.rabbitmq.host=192.168.124.22
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
#spring.rabbitmq.virtual-host=
4、在springboot自带的测试文件中进行测试
package com.gong.springbootrabbitmq;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootRabbitmqApplicationTests {
@Autowired
RabbitTemplate rabbitTemplate;
@Test
public void contextLoads() {
//点对点消息
//rabbitTemplate.send(exchange,routeKey,message);message需要自定义消息内容和消息头
//rabbitTemplate.convertAndSend(exchange,routeKey,object);主需要传入要发送的对象,会自动序列化发送给rabbitmq,
// object默认当成消息体
Map<String,Object> map = new HashMap<>();
map.put("msg","这是第一个消息");
map.put("data", Arrays.asList("hello",123,true));
rabbitTemplate.convertAndSend("exchange.direct","gong.news",map);
}
}
首先是删除掉上一节进行测试的全部消息,点击Purge--Purge messages。然后运行测试,在rabbitmq界面上查看,成功发送了过来。
默认会被序列化之后发送。 然后我们再进行消息的获取:
@Test
public void testRecieve(){
Object receiveAndConvert = rabbitTemplate.receiveAndConvert("gong.news");
System.out.println(receiveAndConvert.getClass());
System.out.println(receiveAndConvert);
}
成功获得:
5、我们也可以设置发送消息为json格式
package com.gong.springbootrabbitmq.config;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyAmqpConfig {
@Bean
public MessageConverter messageConvter(){
return new Jackson2JsonMessageConverter();
}
}
再测试发送数据:
6、测试发送一个对象
Book.java
package com.gong.springbootrabbitmq.bean;
public class Book {
private String bookName;
private String author;
@Override
public String toString() {
return "Book{" +
"bookName='" + bookName + ''' +
", author='" + author + ''' +
'}';
}
public Book(){
}
public Book(String bookName, String author) {
this.bookName = bookName;
this.author = author;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
我们这么发送:
rabbitTemplate.convertAndSend("exchange.direct","gong.news",
new Book("英雄联盟","德玛西亚"));
也可以发送:
7、广播
@Test
public void testMsg(){
rabbitTemplate.convertAndSend("exchange.fanout","",
new Book("绝地求生","西西嘛呦"));
}
都收到了消息:
- [编程经验] Python中的modlue和packages的区别
- Day5上午解题报告
- [编程经验] Pandas中比较好用的几个方法
- [编程经验] Elasticsearch 初识
- 2017.10.26水题大作战部分题解
- 2017.10.27涩会题大乱斗部分题解
- 【 关关的刷题日记50】 Leetcode 345. Reverse Vowels of a String
- Day1上午解题报告
- 【 关关的刷题日记51】 Leetcode 67. Add Binary
- 【 关关的刷题日记53】 Leetcode 100. Same Tree
- Day1下午解题报告
- 【关关的刷题日记54】Leetcode 226. Invert Binary Tree
- Day2上午解题报告
- 【关关的刷题日记55】Leetcode 404. Sum of Left Leaves
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 群组复制MySQL Group Replication
- 关于自定义单选框InfoPreference的笔记
- Python爬虫之gerapy爬虫管理
- 内存地址中藏着的学问
- Python爬虫之crawlspider类的使用
- 数据结构 - 堆(Heap)
- 信息收集之主机发现:masscan
- 信息收集之社工字典
- CloudBase CMS 2.0 焕新升级,从「心」出发!
- 使用MySQL Keyring 的 SECRET类型密钥执行非对称加密
- node egg 实现跨域
- 使用Markdown画流程图
- HBase NotServingRegionException
- Flink SQL 写入 Hive表的性能问题
- 文件系统索引extent 和 bitmap区别