SpringBoot整合RabbitMQ–注解–使用/实例

SpringBoot整合RabbitMQ–注解–使用/实例本文用实例介绍 SpringBoot 中 RabbitMQ 相关的注解

原文网址:SpringBoot整合RabbitMQ–注解–使用/实例_IT利刃出鞘的博客-CSDN博客

简介

        本文用实例介绍SpringBoot中RabbitMQ相关的注解。

@RabbitListener

用法1:用在方法上

说明

        当监听到队列中有消息时则会进行接收并处理。如果队列不存在,会报错。

代码示例

@Component public class Receiver { //也可监听多个队列:@RabbitListener(queues = {"hello", "hi"}) @RabbitListener(queues = "hello") public void process(String hello) { System.out.println ("Receiver : " + hello); } }

@RabbitListener 的 bindings 属性声明 Binding(若 RabbitMQ 中不存在该绑定所需要的 Queue、Exchange、RouteKey 则报错)

@RabbitListener(bindings = @QueueBinding( exchange = @Exchange(value = "topic.exchange",durable = "true",type = "topic"), value = @Queue(value = "consumer_queue",durable = "true"), key = "key.#" )) public void processMessage1(Message message) { System.out.println(message); }

用法2:用在类上

  1. 需配合 @RabbitHandler 注解一起使用
  2. @RabbitListener 标注在类上面表示当有收到消息的时候,就交给 @RabbitHandler 的方法处理,具体使用哪个方法处理,根据 MessageConverter 转换后的参数类型判断。
@Component @RabbitListener(queues = "consumer_queue") public class Receiver { @RabbitHandler public void processMessage1(String message) { System.out.println(message); } @RabbitHandler public void processMessage2(byte[] message) { System.out.println(new String(message)); } }

@Payload 与 @Headers

简介

  1. @Headers 必须通过Map接收。
  2. @Header(“amqp_receivedRoutingKey”) String routingKey 直接获取header中某一个key 

用法1:获得bod和所有header

@RabbitListener(queues = "debug") public void processMessage1(@Payload String body, @Headers Map 
  
    headers) { System.out.println("body:" + body); System.out.println("Headers:" + headers); } 
  

用法2:获得body和所有header

@RabbitListener(queues = "debug") public void processMessage1(@Payload String body, @Header String token) { System.out.println("body:" + body); System.out.println("token:" + token); }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207078.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:30
下一篇 2026年3月19日 下午2:30


相关推荐

  • 阿里云轻量级服务器和ecs的区别_阿里云服务器可以干嘛

    阿里云轻量级服务器和ecs的区别_阿里云服务器可以干嘛阿里云轻量应用服务器与云服务器ECS服务器对比优势 …

    2022年4月21日
    67
  • java中数组的输出方法_java将一个数组逆序输出

    java中数组的输出方法_java将一个数组逆序输出%d:以十进制的形式输出带符号的整数。%o:以八进制的形式输出无符号的整数。%x:以十六进制的形式输出无符号整数。%u:yishijinzhid

    2022年10月11日
    6
  • matlab/simulink学习的笔记都总结在这里

    matlab/simulink学习的笔记都总结在这里simulink 中小方块与小箭头如何连接 小方块是电气线路 小箭头是信号流 他们之间是不能连接的 从信号到电气有受控源 从电气到信号有电压电流测量模块

    2026年3月17日
    2
  • 使用dlv调试golang程序

    使用dlv调试golang程序1 编译选项 gobuild gcflags all N l 必须这样编译 才能用 gdb 打印出变量 第二个是小写的 L 不是大写的 i 需要加编译选项 类似 gcc 中的 g 选项 加入调试信息 关于如何安装 dlv 请自行百度或者谷歌 2 使用 dlv 调试 dlv 的功能介绍 Usage dlv command AvailableCom attach

    2026年3月26日
    2
  • 【Nginx】什么是Nginx?为什么使用Nginx?

    【Nginx】什么是Nginx?为什么使用Nginx?一、前言为毛要用nginx服务器代理,不直接用tomcat7.0,还做多了一次接请求?这个是我想问的,公司的新项目是要用Nginx+tomcat7+jdk开发的,用户命名可以直接访问tomcat,为啥还要用Nginx?这货是个啥玩意?二、什么是Nginx?在传统的Web项目中,并发量小,用户使用的少。所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器…

    2022年7月23日
    17
  • ContentPlaceHolder控件设计缺陷

    ContentPlaceHolder控件设计缺陷(图一)(图二)大家看到上面两张图,我分别拖入了两个DataList与ObjectDataSource控件了,又分别放到两个ContentPlaceHolder控件内,选择数据源时可以看到ObjectDataSource1与ObjectDataSource2,但只能选择各自ContentPlaceHolder嵌套内的ObjectDataSource控件,如果content3选择conte…

    2022年7月13日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号