SpringBoot集成系列--RabbitMQ

文章目录

  • 一、代码
    • 1、添加依赖
    • 2、配置RabbitMQ连接
    • 3、RabbitMQ配置
    • 4、创建生产者
    • 5、创建消费者
    • 6、测试
  • 二、遇到的问题
    • 1、Channel shutdown
    • 2、收不到信息
    • 3、安装RabbitMQ,无法访问控制台访问

一、代码

1、添加依赖

在pom.xml文件中添加RabbitMQ的相关依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2、配置RabbitMQ连接

在application.properties文件中配置RabbitMQ的连接信息

spring.rabbitmq.host=your-rabbitmq-host
spring.rabbitmq.port=your-rabbitmq-port
spring.rabbitmq.username=your-rabbitmq-username
spring.rabbitmq.password=your-rabbitmq-password

其中,spring.rabbitmq.host和spring.rabbitmq.port是RabbitMQ服务器的地址和端口号,默认端口号为5672;spring.rabbitmq.username和spring.rabbitmq.password是登录RabbitMQ的用户名和密码,首次安装,默认账号和密码都为guest。

3、RabbitMQ配置

注:导入的包是org.springframework.amqp下面的
启动时,自动帮我们创建好Queue和Exchange,进行绑定

@Configuration
public class RabbitMQConfig {@Autowiredprivate ConnectionFactory connectionFactory;@Beanpublic RabbitAdmin rabbitAdmin() {return new RabbitAdmin(connectionFactory);}@Beanpublic Queue queue() {Queue queue = new Queue("forlan-queue");rabbitAdmin().declareQueue(queue);return queue;}@Beanpublic DirectExchange exchange() {DirectExchange exchange = new DirectExchange("forlan-exchange");rabbitAdmin().declareExchange(exchange);return exchange;}@Beanpublic Binding binding() {return BindingBuilder.bind(queue()).to(exchange()).with("forlan-routing-key");}
}

4、创建生产者

@Component
public class RabbitMQProducer {@Autowiredprivate RabbitTemplate rabbitTemplate;public void testSend(){rabbitTemplate.convertAndSend("forlan-exchange", "forlan-routing-key", "测试发送RabbitMQ");}
}

其中,RabbitTemplate是Spring AMQP库提供的一个类,用于操作RabbitMQ队列;convertAndSend方法用于将消息对象转换成RabbitMQ的消息格式,并通过指定的交换机和路由键将消息发送到指定的队列中,在这里,我们使用了"forlan-exchange和"forlan-routing-key"作为交换机和路由键的名称。

5、创建消费者

@Component
public class RabbitMQConsumer {@RabbitListener(queues = "forlan-queue")public void handleMessage(String message) {System.out.println("RabbitMQConsumer收到消息:" + message);}
}

@RabbitListener 是Spring框架为简化RabbitMQ消息监听而提供的一个注解。通过在方法上添加此注解,Spring会将该方法注册为一个消息监听器,当RabbitMQ队列中有消息到达时,会自动调用该方法进行处理。也就是当RabbitMQ中的 “forlan-queue” 队列中有新的消息到达时,就会自动调用 handleMessage 方法进行处理。

6、测试

@Autowired
private RabbitMQProducer rabbitMQProducer;
@Test
public void send() {rabbitMQProducer.testSend("Forlan测试发送RabbitMQ消息");
}

消费者成功收到信息
在这里插入图片描述

二、遇到的问题

1、Channel shutdown

Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'forlan-exchange' in vhost '/', class-id=60, method-id=40)

不存在的,不会自动帮你创建,你可以在RabbitMQ后台创建,也可以在代码中设置不存在时创建,项目中就是采取在代码中自动创建了

2、收不到信息

因为RabbitMQConsumer没有注入到容器中,记得加上@Component,如下:

@Component
public class RabbitMQConsumer {...
}

3、安装RabbitMQ,无法访问控制台访问

需要开放控制台远程登录权限,在安装的目录/etc/rabbitmq下配置好rabbitmq.config,内容如下:

[{rabbit,[{loopback_users,[]}]}].

注:记得配置不要有多余的标点符号,不然会出现Failed to start RabbitMQ broker.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/266619.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序-选择排序与堆排序

文章目录 一、选择排序二、堆排序三、时间复杂度四、稳定性 一、选择排序 思想&#xff1a; 将数组第一个元素作为min&#xff0c;然后进行遍历与其他元素对比&#xff0c;找到比min小的数就进行交换&#xff0c;直到最后一个元素就停止&#xff0c;然后再将第二个元素min&…

ES-分析器

分析器 两种常用的英语分析器 1 测试工具 #可以通过这个来测试分析器 实际生产环境中我们肯定是配置在索引中来工作 GET _analyze {"text": "My Moms Son is an excellent teacher","analyzer": "english" }2 实际效果 比如我们有下…

鸿蒙原生应用再添新丁!同花顺入局鸿蒙

鸿蒙原生应用再添新丁&#xff01;同花顺入局鸿蒙 来自 HarmonyOS 微博12月11日消息&#xff0c;同花顺已完成#鸿蒙原生应用#beta版本&#xff0c;并正在进行全量版本开发&#xff0c;进一步丰富了#鸿蒙原生应用#的覆盖领域。同花顺作为股民和券商首选的一站式金融理财服务平台…

利用贝叶斯超参数优化,提升模型效果更科学(附Python代码)

超参数优化在大多数机器学习流水线中已成为必不可少的一步&#xff0c;而贝叶斯优化则是最为广为人知的一种“学习”超参数优化方法。 超参数优化的任务旨在帮助选择学习算法中成本&#xff08;或目标&#xff09;函数的一组最佳参数。这些参数可以是数据驱动的&#xff08;例…

聚首引领行业风潮!聚首品牌联动资源价值平台发布会正式启航

2023年12月10日&#xff0c;由杭州建筑装饰学会、浙江聚首联优材料科技有限公司主办&#xff0c;天尚设计集团、公和设计集团、铭扬工程设计集团、地标设计集团、上宸工程设计集团、华坤建筑设计院、广厦建筑设计研究院、上海传承博华建筑规划设计院、航冠工程设计院、浙江鸿能…

【小白专用】MySQL查询数据库所有表名及表结构其注释

一、先了解下INFORMATION_SCHEMA 1、在MySQL中&#xff0c;把INFORMATION_SCHEMA看作是一个数据库&#xff0c;确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名&#xff0c;数据库的表&#xff0c;表栏的数据类型与访问权 限等。在INF…

通过Jmeter压测存储过程

一、存储过程准备&#xff1a; 1、建立一个空表&#xff1a; 1 CREATE TABLE test_data ( id NUMBER, name VARCHAR2(50), age NUMBER ); 2、建立一个存储过程&#xff1a; CREATE OR REPLACE PROCEDURE insert_test_data(n IN NUMBER) ASBEGIN--EXECUTE IMMEDIATE trunca…

【docker三】Docker镜像的创建方法

目录 一、Docker镜像&#xff1a; 1、 镜像的概念 2、docker的创建镜像方式&#xff1a; 1.1、基于已有镜像进行创建&#xff1a; 1.2、基于模版创建&#xff1a; 1.3、基于dockerfile创建&#xff1a; 二、Dockerfile概述 1、Dockerfile概念&#xff1a; 2、dockerfile…

基于ssm电脑配件销售系统的设计与实现论文

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于电脑配件销售系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了电脑配件销售系统&#xff0c;它彻底改变了过…

IT圈的“鄙视链”大揭秘:从Java到Go,编程语言之战!

目录 ​编辑 Java程序员&#xff1a; 自信满满的领头羊 C语言程序员&#xff1a; 严肃的技术守护者 汇编语言程序员&#xff1a; 古老的传承者 Go语言程序员&#xff1a; 新晋的潜力股 结语&#xff1a; 编程语言&#xff0c;相互鄙视中求共存 我的其他博客 在IT圈…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-3燃烧卡路里-系统分析实例

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-3燃烧卡路里-系统分析实例 1. 数学模型2. 比例控制 Proprotional Control 1. 数学模型 2. 比例控制 Proprotional Control

排序算法:【选择排序]

一、选择排序——时间复杂度 定义&#xff1a;第一趟排序&#xff0c;从整个序列中找到最小的数&#xff0c;把它放到序列的第一个位置上&#xff0c;第二趟排序&#xff0c;再从无序区找到最小的数&#xff0c;把它放到序列的第二个位置上&#xff0c;以此类推。 也就是说&am…