RabbitMQ养成记 (6. spingboot 集成 rabbitMQ,生产者/消费者)

news/2024/11/28 11:47:19/

Springboot集成

搞springboot的那群人 不喜欢造轮子,就喜欢搞各种集成。

首先创建一个springboot项目:

之前我们在方法中 创建工厂类配置, 现在直接在application.yml 中配置即可:

spring:rabbitmq:host: **********username: guestpassword: guestvirtual-host: /port: 5672

生产者

然后我们就加一个config配置类 来配置一下:

@Configuration
public class RabbitMQConfig {public static final String EXCHANGE_NAME = "boot_topic_exchange";public static final String QUEUE_NAME = "boot_queue";@Bean("bootExchange")public Exchange bootExchange(){//这里确定工作模式 我们以topic模式为例子return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();}@Bean("bootQueue")public Queue bootQueue(){return QueueBuilder.durable(QUEUE_NAME).build();}@Beanpublic Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue,@Qualifier("bootExchange") Exchange exchange){return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();}}

这样就完成了配置, 相比于 RabbitMQ养成记 3.4.5 中的那种原始配置:
这种配置的优点就是 将对象 交给spring管理 ,不需要我们自己new了

然后配置完成 我们可以写代码了:


@SpringBootTest
@RunWith(SpringRunner.class)
public class ProducerTest {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testpublic void testSend(){rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"boot.maru","boot mq hello");}
}

很方便对吧 对比之前上一篇里面 我们写的那一堆。

跑一下:
在这里插入图片描述

消息发过去了 且创建了这样一个队列。

我们发出去的消息是:boot mq hello

消费者

我们编写一个监听者,队列名称和刚才的队列名称相同:


@Component
public class RabbitMQListener {@RabbitListener(queues = "boot_queue")public void ListenerQueue(Message message){System.out.println("监听消息:"+message);}}

然后启动springboot 让他处于监听状态:

来了!

org.vcaml.ConsunmerApplication           : Started ConsunmerApplication in 0.58 seconds (JVM running for 1.078)
监听消息:(Body:'boot mq hello' 
MessageProperties [headers={}, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=false, receivedExchange=boot_topic_exchange, receivedRoutingKey=boot.maru, deliveryTag=1, consumerTag=amq.ctag-u6bROUMNM7nRlWkrhlAT-w, consumerQueue=boot_queue])

http://www.ppmy.cn/news/68969.html

相关文章

Nvidia技术路线和卷积神经网络介绍

1.Nvidia技术路线概述 2.卷积神经网络介绍 软硬件平台 目的:用卷积神经网络(CNNs)将车前部摄像头捕捉到的原始像素图映射为汽车的方向操控命令。 训练:这套端到端学习系统使用了NVIDIA DevBox, 用Torch 7进行训练。 操作:一台 NVIDIA DRIVE PX 自动驾驶汽车计算…

Ch3.栈、队列、数组

文章目录 1.栈1.栈的基本概念2.栈的性质卡特兰数栈的出栈顺序3.栈的实现1.顺序栈 (栈的顺序存储实现)共享栈2.链栈(栈的链式存储实现)4.栈的应用(1) 括号匹配(2) 表达式求值(中缀表达式→后缀表达式)(3)递归(4)进制转换2.队列1.队列的概念2.队列的性质3.队列的实现(1)顺序队…

滨州软件著作权申请

各省、自治区、市版权局负责本辖区作者或者其他作权人作品的登记。国家版权局负责外国、台湾、香港、澳门作者或者其他作权人作品的登记。受国家版权局委托,中国版权保护中心负责外国、台湾、香港、澳门作者或者其他作权人作品的登记。 作者或者其他享有作权的公民所…

微服务 - Redis缓存 · 数据结构 · 持久化 · 分布式 · 高并发

一、分布式解决 Session 的问题 在单站点中,可以将在线用户信息存储在Session中,随时变更获取信息;在多站点分布式集群如何做到Session共享呢?架设一个Session服务,供多服务使用。 频繁使用的数据存在DB端&#xff0…

深入学习MYSQL-数据检索

前言 由于大部分基础知识都已经学过了,这里只把觉得应该记录一下的知识点做个笔记。然后以下笔记和sql均来自书籍(MYSQL必会知识),会根据看的其它书记继续调整和优化笔记。 LIMIT 注:这个平时的SQL查询没有什么区别,我主要展示一下在命令行…

阿兰·图灵如何证明的通用图灵机不可判定“停机问题

目录 阿兰图灵如何证明的通用图灵机不可判定“停机问题 我还是不太理解,我停机预测器已经预测该程序会停机了,那么这个机器就应该停止了呀,实际情况应该是就是这个计算机会停机呀 这里指的反向操作是什么操作呢? 我还是觉得怪怪…

泰克Tektronix AFG31021 任意波函数发生器产品资料

AFG31021是一款高质量、多功能的任意波形发生器,可以生成高精度、高分辨率的波形信号。该产品的主要特点包括: 可以生成任意波形信号,内置多种标准波形,如正弦波、方波、三角波、锯齿波等,也可以通过用户自定义来生成…

如何在JavaScript中获取当前时间yyyymmddhhmmss? (六种实现方式)

## 介绍 在编写JavaScript代码时,我们经常需要获取当前日期和时间。在本文中,我们将介绍几种获取当前时间并将其格式化为 yyyymmddhhmmss 的字符串的方法。 方法一:使用Date对象 在JavaScript中,我们可以使用 Date 对象来获取当…