这篇文章主要讲解了“SpringBoot怎么集成RabbitMQ”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么集成RabbitMQ”吧!
首先搭建SpringBoot项目,在POM XML文件中添加如下依赖
<依赖>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-amqp</artifactid></依赖><依赖>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid></依赖>
修改配置文件,添加如下RabbitMQ配置
服务器:
port: 8888 # 设置端口号Spring:
rabbitMQ:
host: 127.0.0.1 # 设置 RabbitMQ 的主机
port: 5672 # 设置 RabbitMQ 服务端口
username: guest # 设置 RabbitMQ 用户名
password: guest # 设置 RabbitMQ 密码
新的公共常量类
public interface RabbitConstant {
/**
* 简单模式
*/
String SIMPLE_QUEUE_NAME = "simple_queue";
/**
* 工作模式
*/
String WORK_QUEUE_NAME = "work_queue";
/**
* 发布/订阅模式
*/
String PUBLISH_SUBSCRIBE_EXCHANGE_NAME = "publish_subscribe_exchange";
字符串 PUBLISH_SUBSCRIBE_FIRST_QUEUE_NAME = "publish_subscribe_first_queue";
字符串 PUBLISH_SUBSCRIBE_SECOND_QUEUE_NAME = "publish_subscribe_second_queue";
/**
* 路由模式
*/
String ROUTING_EXCHANGE_NAME = "routing_exchange";
字符串 ROUTING_FIRST_QUEUE_NAME = "routing_first_queue";
字符串 ROUTING_SECOND_QUEUE_NAME = "routing_second_queue";
字符串 ROUTING_THIRD_QUEUE_NAME = "routing_third_queue";
字符串 ROUTING_FIRST_QUEUE_ROUTING_KEY_NAME = "routing_first_queue_routing_key";
字符串 ROUTING_SECOND_QUEUE_ROUTING_KEY_NAME = "routing_second_queue_routing_key";
字符串 ROUTING_THIRD_QUEUE_ROUTING_KEY_NAME = "routing_third_queue_routing_key";
/**
* 主题模式
*/
String TOPICS_EXCHANGE_NAME = "topics_exchange";
字符串 TOPICS_FIRST_QUEUE_NAME = "topics_first_queue";
字符串 TOPICS_SECOND_QUEUE_NAME = "
字符串 TOPICS_THIRD_QUEUE_NAME = "topics_third_queue";
String TOPICS_FIRST_QUEUE_ROUTING_KEY = "topics.first.routing.key";
String TOPICS_SECOND_QUEUE_ROUTING_KEY = "topics.second.routing.key";
String TOPICS_THIRD_QUEUE_ROUTING_KEY = "topics.third.routing.key";
字符串 TOPICS_ROUTING_KEY_FIRST_WILDCARD = "#.first.#";
字符串 TOPICS_ROUTING_KEY_SECOND_WILDCARD = "*.second.#";
字符串 TOPICS_ROUTING_KEY_THRID_WILDCARD = "*.third.*";
/**
* 标题模式
*/
String HEADER_EXCHANGE_NAME = "header_exchange";
字符串 HEADER_FIRST_QUEUE_NAME = "header_first_queue";
字符串 HEADER_SECOND_QUEUE_NAME = "header_second_queue";
/**
* rpc 模式
*/
String RPC_QUEUE_NAME = "rpc_queue";
}
添加一个Controller请求类(用于验证结果,最后可以添加)
导入 com.example.rabbitmq.constant.RabbitConstant;
导入 org.springframework.amqp.core.Message;
导入 org.springframework.amqp.core.MessageProperties;
导入 org.springframework.amqp.rabbit.core.RabbitTemplate;
导入 org.springframework.beans.factory.annotation.Autowired;
导入 org.springframework.web.bind.annotation.GetMapping;
导入 org.springframework.web.bind.annotation.RestController;
导入 java.nio.charset.StandardCharsets;@RestController public class RabbitController {
@Autowired
private RabbitTemplate rabbitTemplate;
@GetMapping(value = "/simple")
public void simple() {
rabbitTemplate.convertAndSend(RabbitConstant.SIMPLE_QUEUE_NAME, "你好世界!");
}
@GetMapping(value = "/work")
public void work() {
rabbitTemplate.convertAndSend(RabbitConstant.WORK_QUEUE_NAME, "work hello!");
}
@GetMapping(value = "/pubsub")
public void pubsub() {
rabbitTemplate.convertAndSend(RabbitConstant.PUBLISH_SUBSCRIBE_EXCHANGE_NAME, null, "发布/订阅你好");
}
@GetMapping(value = "/routing")
public void routing() {
// 向第一个队列发送消息
rabbitTemplate.convertAndSend(RabbitConstant.ROUTING_EXCHANGE_NAME, RabbitConstant.ROUTING_FIRST_QUEUE_ROUTING_KEY_NAME, "路由你好");
}
@GetMapping(value = "/topics")
public void topics() {
// 向第一个队列发送消息。这时候队列可以接收到消息,因为队列的通配符是#first.#,而routing_key是topics first。路由。键,匹配成功
rabbitTemplate.convertAndSend(RabbitConstant.TOPICS_EXCHANGE_NAME, RabbitConstant.TOPICS_FIRST_QUEUE_ROUTING_KEY, "topics hello"); // 向第二个队列发送消息。这时候队列也能收到消息了,因为队列的通配符是*秒#,而routing_key是topic秒。路由。键,匹配成功
rabbitTemplate.convertAndSend(RabbitConstant.TOPICS_EXCHANGE_NAME, RabbitConstant.TOPICS_SECOND_QUEUE_ROUTING_KEY, "topics hello");
// 向第三个队列发送消息。此时队列无法接受消息,因为队列通配符是*第三个*,而routing_key是topics第三个。路由。键,匹配失败
rabbitTemplate.convertAndSend(RabbitConstant.TOPICS_EXCHANGE_NAME, RabbitConstant.TOPICS_THIRD_QUEUE_ROUTING_KEY, "topics hello");
}
@GetMapping(value = "/header") public void header() {
// 这个消息应该被两个队列接收。第一个队列全部匹配成功,第二个队列 Hello 值任意匹配成功
MessageProperties messageProperties = new MessageProperties();
messageProperties.setHeader("matchAll", "YES");
messageProperties.setHeader("你好", "world");
Message message = new Message("header first hello".getBytes(StandardCharsets.UTF_8), messageProperties);
rabbitTemplate.convertAndSend(RabbitConstant.HEADER_EXCHANGE_NAME, null, message);
// 这个消息应该只被第二个队列接受。第一个队列全部匹配失败,
MessageProperties messagePropertiesSecond = new MessageProperties();
messagePropertiesSecond.setHeader("matchAll", "NO");
Message messageSecond = new Message("header second hello".getBytes(StandardCharsets.UTF_8), messagePropertiesSecond);
rabbitTemplate.convertAndSend(RabbitConstant.HEADER_EXCHANGE_NAME, null, messageSecond);
}
@GetMapping(value = "/rpc")
public void rpc() {
Object responseMsg = rabbitTemplate.convertSendAndReceive(RabbitConstant.RPC_QUEUE_NAME, "rpc hello!");
System.out.println("rabbit rpc 响应消息:" + responseMsg);
}
}
感谢各位的阅读,以上就是“SpringBoot怎么集成RabbitMQ”的内容了,经过本文的学习后,相信大家对SpringBoot怎么集成RabbitMQ这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。