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("绝地求生","西西嘛呦"));
}
都收到了消息:
- No.011 Container With Most Water
- No.009 Palindrome Number
- Windows DNS API RCE漏洞分析及PoC构造
- 爬虫采集去重优化浅谈
- Android基础总结(10)——手机多媒体的运用:通知、短信、相机、视频播放
- Android基础总结(9)——网络技术
- 【Python环境】基于 Python 和 Scikit-Learn 的机器学习介绍
- 【Python环境】Python分类现实世界的数据
- Android基础总结(7)——异步消息处理
- No.008 String to Integer (atoi)
- No.007 Reverse Integer
- No.006 ZigZag Conversion
- No.005 Longest Palindromic Substring
- Android基础总结(6)——内容提供器
- 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 文档注释
- php的引用类型底层解析
- Roslyn 解决 dotnet core 应用进程间引用找不到 runtimeconfig 依赖文件
- dotnet 在 UOS 国产系统上安装 dotnet sdk 的方法
- 清空Redis集群所有节点的数据工具
- php数组hashtable的巧妙设计
- php运行生命周期--模块初始化php_module_startup
- Visual Studio Code的用户设置相关
- php运行生命周期--请求初始化php_request_startup
- 如何在SAP Spartacus自定义UI里使用标准UI的上下文数据
- php运行生命周期--脚本执行阶段 php_execute
- SAP Spartacus中Angular json pipe的工作原理
- 02.Android崩溃Crash库之App崩溃分析
- mysql事务的实现原理
- 如何通过outlet在SAP Spartacus的产品明细页面插入自定义UI
- 防盗链的原理以及实现