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的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

如何利用React和RabbitMQ构建可靠的消息传递应用引言:现代化的应用程序需要支持可靠的消息传递,以实现实时更新和数据同步等功能。React是一种流行的JavaScript库,用于构建用户界面,而RabbitMQ是一种可靠的消息传递中间件。本文将介绍如何结合React和RabbitMQ构建可靠的消息传递应用,并提供具体的代码示例。RabbitMQ概述:

如何在PHP中使用RabbitMQ实现分布式消息处理引言:在大规模应用程序开发中,分布式系统已成为一个常见的需求。分布式消息处理是这样的一种模式,通过将任务分发到多个处理节点,可以提高系统的效率和可靠性。RabbitMQ是一个开源的,可靠的消息队列系统,它采用AMQP协议来实现消息的传递和处理。在本文中,我们将介绍如何在PHP中使用RabbitMQ来实现分布

SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

随着现代应用程序的复杂性增加,消息传递已成为一种强大的工具。在这个领域,RabbitMQ已成为一个非常受欢迎的消息代理,可以用于在不同的应用程序之间传递消息。在这篇文章中,我们将探讨如何在Go语言中使用RabbitMQ。本指南将涵盖以下内容:RabbitMQ简介RabbitMQ安装RabbitMQ基础概念Go语言中的RabbitMQ入门RabbitMQ和Go

本文来写个详细的例子来说下dubbo+nacos+Spring Boot开发实战。本文不会讲述太多的理论的知识,会写一个最简单的例子来说明dubbo如何与nacos整合,快速搭建开发环境。

Golang与RabbitMQ实现实时数据同步的解决方案引言:当今时代,随着互联网的普及和数据量的爆发式增长,实时数据的同步变得越来越重要。为了解决数据异步传输和数据同步的问题,许多公司开始采用消息队列的方式来实现数据的实时同步。本文将介绍基于Golang和RabbitMQ的实时数据同步的解决方案,并提供具体的代码示例。一、什么是RabbitMQ?Rabbi

现在越来越多的企业开始采用微服务架构模式,而在这个架构中,消息队列成为一种重要的通信方式,其中RabbitMQ被广泛应用。而在go语言中,go-zero是近年来崛起的一种框架,它提供了很多实用的工具和方法,让开发者更加轻松地使用消息队列,下面我们将结合实际应用,来介绍go-zero和RabbitMQ的使用方法和应用实践。1.RabbitMQ概述Rabbit

GolangRabbitMQ:实现高可用的消息队列系统的架构设计和实现,需要具体代码示例引言:随着互联网技术的不断发展和应用的广泛,消息队列成为了现代软件系统中不可或缺的一部分。作为一种实现解耦、异步通信、容错处理等功能的工具,消息队列为分布式系统提供了高可用性和扩展性的支持。而Golang作为一种高效、简洁的编程语言,广泛应用于构建高并发和高性能的系统
