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 {
	@Autowired
	private ConnectionFactory connectionFactory;

	@Bean
	public RabbitAdmin rabbitAdmin() {
		return new RabbitAdmin(connectionFactory);
	}

	@Bean
	public Queue queue() {
		Queue queue = new Queue("forlan-queue");
		rabbitAdmin().declareQueue(queue);
		return queue;
	}

	@Bean
	public DirectExchange exchange() {
		DirectExchange exchange = new DirectExchange("forlan-exchange");
		rabbitAdmin().declareExchange(exchange);
		return exchange;
	}

	@Bean
	public Binding binding() {
		return BindingBuilder.bind(queue()).to(exchange()).with("forlan-routing-key");
	}
}

4、创建生产者

@Component
public class RabbitMQProducer {

	@Autowired
	private 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.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python期末简答题及答案,python期末题库和答案

本篇文章给大家谈谈python期末简答题及答案&#xff0c;以及python期末题库和答案&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 期末复习判断题 &#xff08; √ &#xff09;Python变量名区分大小写,所以student和Student不是同一个变量。&#xff08; &…

MySQL慢SQL优化思路

MySQL慢SQL优化思路 具体思路&#xff1a; 1、慢查询日志记录慢 SQL 2、explain 分析 SQL 的执行计划 3、profile 分析执行耗时 4、Optimizer Trace 分析详情 5、确定问题并采用相应的措施 1、查看慢日志 1.1 使用命令查询慢日志配置 mysql> show variables like s…

机器人制作开源方案 | 网球收纳机器人

作者&#xff1a;孙宇晗、刘子昊、单正扬、李悦、张紫琦 单位&#xff1a;山东大学&#xff08;威海&#xff09; 指导老师&#xff1a;庞豹 1. 场景调研 1.1 宏观背景 体育作为社会经济、政治、文化的重要组成部分,越来越受政府、社会、学校等各阶层的关注。近年来&#x…

数据结构与算法-Rust 版读书笔记-2线性数据结构-栈

数据结构与算法-Rust 版读书笔记-2线性数据结构-栈 一、线性数据结构概念 数组、栈、队列、双端队列、链表这类数据结构都是保存数据的容器&#xff0c;数据项之间的顺序由添加或删除时的顺序决定&#xff0c;数据项一旦被添加&#xff0c;其相对于前后元素就会一直保持位置不…

[ABAP] Selection Screen 按钮管理

1. 隐藏执行按钮 initialization.data btab type table of sy-ucomm.append ONLI to btab.call function RS_SET_SELSCREEN_STATUSexportingp_status sy-pfkeytablesp_exclude btab.2.添加按钮(Tool Bar) tables: sscrfields.selection-screen begin of line.selection-scre…

Leetcode704二分查找、折半查找(Java实现)

好久没有更新算法题&#xff0c;今天来写一道二分查找的题目。题目要求如下&#xff0c; 那么这道题的解题思路如下&#xff0c;我们寻找的过程是首先去访问数组的中间位置mid&#xff0c;如果nums[mid]大于了targe那么说明&#xff0c;我们要找的数在mid的左半边&#xff0c;…

外包干了3个月,技术退步明显。。。

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

awt中文乱码-Intellij IDEA

乱码的根本原因在于秦始皇嘎太早了&#xff08;bushi 解决方法&#xff1a;肉眼可见的编码设置统一为GBK 1.打开设置找到文件编码 2.肉眼可见的编码统统改成GBK 有人该问了&#xff0c;为什么不改成utf-8&#xff0c;因为awt的编码由操作系统决定&#xff0c;我的是win家庭中…

Faster R-CNN

Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。同样使用VGG16作推理速度在GPU上达到5fps(包括候选区域的生成)&#xff0c;准确率为网络的backbone&#xff0c;也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。 算法流程 右边这部分和Fa…

人体关键点检测3:Android实现人体关键点检测(人体姿势估计)含源码 可实时检测

目录 1. 前言 2.人体关键点检测方法 (1)Top-Down(自上而下)方法 (2)Bottom-Up(自下而上)方法&#xff1a; 3.人体关键点检测模型训练 4.人体关键点检测模型Android部署 &#xff08;1&#xff09; 将Pytorch模型转换ONNX模型 &#xff08;2&#xff09; 将ONNX模型转换…

(纯原创)基于JavaWeb的宠物领养商城(详细源码以及开发设计报告)

摘要 本宠物领养系统以MVC分层为原则&#xff0c;数据持久化使用Mybatis&#xff0c;数据库使用MySQL&#xff0c;这些技术目前相对比较成熟&#xff0c;方便系统的维护与扩展 商城系统包括了宠物领养、用户注册、用户登录、商品查询、商品添加到购物车、删除商品等几大功能…

云贝教育 | 分享课:12月12日周二晚Oracle分享课享来了

Oracle 19c OCM分享课分享主题: Introduction to Clusterware 讲师&#xff1a;郭一军 直播分享平台&#xff1a;云贝教育视频号 时间&#xff1a;12月12日 周二晚 19: 30

广东佛山开房屋租赁发票

我是20223年12月办理的&#xff0c;给大家做个参考。 一、准备材料 &#xff08;如果非房东本人办理&#xff0c;还需要房东签份授权书&#xff0c;多复印几份或者直接签多份&#xff0c;不然会被税务局收走&#xff09; 废话不多说&#xff0c;直接上图。 二、线上预约 附个…

H264帧内预测介绍

4x4 luma宏块的预测模式 4x4 luma宏块有9种预测模式 16x16 luma宏块的预测模式 16 x16 luma宏块有四种预测模式 帧内预测模式信令(Signalling intra prediction modes) 4x4 或者8x8 luma prediction 对4x4或者8x8 luma因为每一个宏块都要指明预测模式,且有9种预测模式可…

孩子还是有一颗网安梦——Bandit通关教程:Level0

&#x1f575;️‍♂️ 专栏《解密游戏-Bandit》 &#x1f310; 游戏官网&#xff1a; Bandit游戏 &#x1f3ae; 游戏简介&#xff1a; Bandit游戏专为网络安全初学者设计&#xff0c;通过一系列级别挑战玩家&#xff0c;从Level0开始&#xff0c;逐步学习基础命令行和安全概念…

java+springboot+ssm学生社团管理系统76c2e

本系统包括前台和后台两个部分。前台主要是展示社团列表、社团风采、社团活动、新闻列表等&#xff0c;前台登录后进入个人中心&#xff0c;在个人中心能申请加入社团、查看参加的社团活动等&#xff1b;后台为管理员与社团负责人使用&#xff0c;应用于对社团的管理及内容发布…

西工大网络空间安全学院计算机系统基础实验二(清楚实验框架及phase_1)

首先&#xff0c;将自己的实验包从Windows系统中使用scp命令传到Linux虚拟机中。而要想传到Linux虚拟机中&#xff0c;第一步就是要确定Linux虚拟机的IP地址&#xff0c;如 图1&#xff1a;确定Linux虚拟机的IP地址 所示。接着使用scp命令将实验包从Windows系统传送到Linux虚拟…

栈(深入理解栈是什么)

这里写目录标题 栈概念栈的初始化栈的溢出函数的栈帧函数的返回 栈 概念 英文&#xff1a;stack&#xff0c;也叫做堆栈。 特点&#xff1a;先进后出。 栈的两个基本操作&#xff0c;也就是入栈和出栈。都是通过SP指针来维护。C语言中的函数的局部变量&#xff0c;传递的实参…

计算机二级Python基本操作题-序号46

Python 函数查询 1. 《卖火柴的小女孩》是丹麦童话故事作家安徒生的一篇童话故事&#xff0c;发表于1846年。主要讲了一个卖火柴的小女孩在富人阖家欢乐、举杯共庆的大年夜冻死在街头的故事。这里给出《卖火柴的小女孩》的一个网络版本文件&#xff0c;文件名为“小女孩.txt”…

IOday8作业

使用消息队列完成两个进程之间相互通信(多进程) #include<myhead.h>//定义结构体 struct buf {long mtype;char mtest[1024]; };#define SIZE (sizeof(struct buf)-sizeof(long))//进程 int main(int argc, const char *argv[]) {//创建keykey_t key1 ftok("/&quo…