HelloWorld搭建(第一种模型)

1.创建Springboot项目并且引入依赖

<!-- 引入RabbitMQ的相关依赖 -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.2</version>
</dependency>

2.第一种模式(直连)

P:生产者,也就是发送消息的程序。

C:消费者:消息的接收者,会一直等待消息的程序。

queue:消息队列,类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消费消息。

3.定义生产者消费者案例

3.1封装工具类

public class RabbitMqUtil {private static ConnectionFactory connectionFactory;static {//创建连接mq的连接工厂对象connectionFactory = new ConnectionFactory();//设置连接rabbitmq的主机connectionFactory.setHost("127.0.0.1");//设置端口号connectionFactory.setPort(5672);//设置连接哪个虚拟主机connectionFactory.setVirtualHost("/ems");//设置访问虚拟主机的用户,需要用户名和密码connectionFactory.setUsername("ems");connectionFactory.setPassword("ems");}//获取连接对象public static Connection getConnection(){try {return connectionFactory.newConnection();} catch (Exception e) {e.printStackTrace();}return null;}//关闭通道和关闭连接工具方法public static void closeConnectionAndChannel(Channel channel, Connection connection){try{if(channel!=null) channel.close();if(connection!=null) connection.close();}catch (Exception e){e.printStackTrace();}}
}

 

3.2生产者

public class Provider {//生产消息@Testpublic void testSendMessage() throws IOException, TimeoutException {//获取连接对象Connection connection = RabbitMqUtil.getConnection();//获取连接通道Channel channel = connection.createChannel();/*通道绑定对应消息队列queue:队列名称 如果队列不存在会自动创建durable:用来定义队列特性是否要持久化 true:持久化队列  false:不持久化,如果是不持久化,消息队列重启队列就会全部消失,消息也会丢失exclusive:是否独占队列 true 独占  false 不独占autoDelete:在消费者完成消费并与队列断开连接后是否自动删除队列arguments:额外附加参数*/channel.queueDeclare("hello",true,false,false,null);//发布消息(这一步才是关键,指明了消息到底发到哪个队列去了)/*参数:交换机名称队列名称传递消息额外设置   MessageProperties.PERSISTENT_TEXT_PLAIN表示消息持久化消息具体内容*/channel.basicPublish("","hello", MessageProperties.PERSISTENT_TEXT_PLAIN,"hello rabbitmq".getBytes());//关闭通道   关闭连接RabbitMqUtil.closeConnectionAndChannel(channel,connection);}
}

3.3消费者

public class Consumer {//消费消息,这里需要用main函数,因为消费端要一直监听队列,而test测试会直接结束public static void main(String[] args) throws IOException, TimeoutException {//创建连接mq的连接工厂对象ConnectionFactory connectionFactory = new ConnectionFactory();//设置连接rabbitmq的主机connectionFactory.setHost("127.0.0.1");//设置端口号connectionFactory.setPort(5672);//设置连接哪个虚拟主机connectionFactory.setVirtualHost("/ems");//设置访问虚拟主机的用户,需要用户名和密码connectionFactory.setUsername("ems");connectionFactory.setPassword("ems");//获取连接对象Connection connection = connectionFactory.newConnection();//获取连接通道Channel channel = connection.createChannel();/*通道绑定对应消息队列queue:队列名称 如果队列不存在会自动创建durable:用来定义队列特性是否要持久化 true:持久化队列  false:不持久化exclusive:是否独占队列autoDelete:是否在消费完成后自动删除队列arguments:额外附加参数*/channel.queueDeclare("hello",true,false,false,null);/*参数1:消费的队列名称参数2:开始消息的自动确定机制参数3:消费时的回调接口*/channel.basicConsume("hello",true,new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("=============="+new String(body));}});//注意这里不能关闭通道和连接,因为要一直监听}
}

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

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

相关文章

html-css-js移动端导航栏底部固定+i18n国际化全局

需求&#xff1a;要做一个移动端的仿照小程序的导航栏页面操作&#xff0c;但是这边加上了i18n国家化&#xff0c;由于页面切换的时候会导致国际化失效&#xff0c;所以写了这篇文章 1.效果 切换页面的时候中英文也会跟着改变&#xff0c;不会导致切换后回到默认的语言 2.实现…

动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper

文章目录 前言下载github地址&#xff1a;网盘 关于VideoWebpagesYoutube和流媒体ShadersGIFs游戏和应用程序& more:Performance:多监视器支持&#xff1a;完结 前言 Lively Wallpaper是一款开源的视频壁纸桌面软件&#xff0c;类似 Wallpaper Engine&#xff0c;兼容 Wal…

功能真强大!5个令人惊叹的 Jupyter 黑科技

Jupyter 是一种功能强大的交互式计算环境&#xff0c;被广泛应用于数据分析、机器学习、科学计算等领域。 除了常见的基本功能外&#xff0c;Jupyter还隐藏着许多令人惊叹的黑科技&#xff0c;这些功能可以帮助用户更高效地完成工作&#xff0c;提升工作体验。 在本文中&…

linux线程与进程

简要 在Linux系统中&#xff0c;进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;是操作系统中两个重要的概念&#xff0c;它们都是用于执行程序的执行单元&#xff0c;但有一些关键的区别。 在Linux系统中&#xff0c;可以使用fork系统调用创建新…

stm32f407 bm -> freertos

工程文件差异&#xff1a; 工程结构上&#xff0c;os 版本多了 FreeRTOS 文件夹 在 USER 下多了 FreeRTOSConfig.h 文件&#xff0c;和多了需要用到的一些外设驱动 对比添加 os 文件到 bm 工程中&#xff0c;以及 C/C .h 文件的包含 stm32f4xx_it.c 文件 bm 与 rtos 对比 ①…

龙年快乐,为大家准备了一份新年网安大礼包!

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而…

vmware安装openEuler操作系统

vmware安装openEuler操作系统 1、下载openEuler操作系统镜像文件2、安装openEuler操作系统3、配置使用openEuler操作系统 1、下载openEuler操作系统镜像文件 官网下载链接 链接: https://www.openeuler.org/zh/download/ 这里选择 openEuler 22.03 LTS SP2 版本 标准镜像包 文…

Linux--Raid磁盘冗余阵列

一、什么是Raid "RAID"一词是由David Patterson, Garth A. Gibson, Randy Katz 于1987年在加州大学伯克利分校发明的。在1988年6月SIGMOD会议上提交的论文"A Case for Redundant Arrays of Inexpensive Disks”"中提出&#xff0c;当时性能最好的大型机不断…

空间域图像增强之直方图均衡的python代码实现——冈萨雷斯数字图像处理

原理 直方图&#xff1a; 图像的直方图是一个图像中像素强度值分布的图表。 对于灰度图像&#xff0c;直方图展示了每个灰度级出现的频率。 直方图均衡步骤&#xff1a; 计算累积分布函数&#xff08;CDF&#xff09;&#xff1a;首先&#xff0c;计算图像的直方图&#xff0…

直接形式2(三阶)补偿器

直接形式2&#xff08;三阶&#xff09;补偿器 DF23 myCtrl DF23_DEFAULTS;

收入支出记录,对需要的账目明细进行颜色标记

面对繁杂的账单和财务数据&#xff0c;你是否曾为记账而感到苦恼&#xff1f;别担心&#xff0c;我们为你带来了一款全新的记账软件——晨曦记账本&#xff0c;这不仅仅是一个简单的记账工具&#xff0c;更是你财务管理的得力助手。 所需工具&#xff1a; 一个【晨曦记账本】…

计算机网络(1)

计算机网络&#xff08;1&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网&#xff08;1&#xff09;因特网概念解读服务常见的服务 协议网络边缘特点强调 网络核心特点强调 小程一言 我的计算机网络专栏&#xff0c;是自己在计算机网络…