文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

RabbitMQ---Spring AMQP

2023-08-30 11:00

关注

Spring AMQP

1. 简介

Spring有很多不同的项目,其中就有对AMQP的支持:
在这里插入图片描述

Spring AMQP的页面:http://spring.io/projects/spring-amqp
在这里插入图片描述

注意这里一段描述:
Spring-amqp是对AMQP协议的抽象实现,而spring-rabbit 是对协议的具体实现,也是目前的唯一实现。底层使用的就是RabbitMQ。

2. 依赖和配置

添加AMQP的启动器:

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

在application.yml中添加RabbitMQ地址:

spring:  rabbitmq:    host: 192.168.137.137    username: zhangsan    password: 123456    virtual-host: /shopping    port: 5672

3. 监听者

在SpringAmqp中,对消息的消费者进行了封装和抽象,一个普通的JavaBean中的普通方法,只要通过简单的注解,就可以成为一个消费者。

@Componentpublic class Listener {   @RabbitListener(bindings = @QueueBinding(           value = @Queue(value = "spring.test.queue", durable = "true"),           exchange = @Exchange(                   value = "spring.test.exchange",                   ignoreDeclarationExceptions = "true",                   type = ExchangeTypes.TOPIC           ),           key = {"#.#"}))   public void listen(String msg){       System.out.println("接收到消息:" + msg);   }}

• @Componet:类上的注解,注册到Spring容器
• @RabbitListener:方法上的注解,声明这个方法是一个消费者方法,需要指定下面的属性:
o bindings:指定绑定关系,可以有多个。值是@QueueBinding的数组。@QueueBinding包含下面属性:
o value:这个消费者关联的队列。值是@Queue,代表一个队列
o exchange:队列所绑定的交换机,值是@Exchange类型
o key:队列和交换机绑定的RoutingKey
类似listen这样的方法在一个类中可以写多个,就代表多个消费者。

4. AmqpTemplate

Spring最擅长的事情就是封装,把他人的框架进行封装和整合。
Spring为AMQP提供了统一的消息处理模板:AmqpTemplate,非常方便的发送消息,其发送方法:
在这里插入图片描述

红框圈起来的是比较常用的3个方法,分别是:
o 指定消息
o 指定RoutingKey和消息,会向默认的交换机发送消息
o 指定交换机、RoutingKey和消息体

5. 测试代码

@RunWith(SpringRunner.class)@SpringBootTest(classes = Application.class)public class MqDemo {   @Autowired   private AmqpTemplate amqpTemplate;   @Test   public void testSend() throws InterruptedException {       String msg = "hello, Spring boot amqp";       this.amqpTemplate.convertAndSend("spring.test.exchange","a.b", msg);       // 等待10秒后再结束       Thread.sleep(10000);   }}

运行后查看日志:
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_39311377/article/details/132393312

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯