您的位置:首页 > 财经 > 金融 > @RabbitListener 注解详解

@RabbitListener 注解详解

2025/1/16 21:45:37 来源:https://blog.csdn.net/weixin_42118323/article/details/141939787  浏览:    关键词:@RabbitListener 注解详解

前言:

@RabbitListener 注解是 Spring AMQP 提供的注解,用于简化 RabbitMQ 消息监听器的创建,我们在方法上添加 @RabbitListener 注解,就可以将方法注册为消息监听器,监听 RabbitMQ 的消息,本篇我们来分析一下 @RabbitListener 注解的使用详解。

@RabbitListener 的简单使用

我们在 directConsumer 方法上加了一个 @RabbitListener 注解,并在注解中标注了队列名 direct-buget-queue,这样我们就可以监听消费队列 direct-buget-queue 中的消息了。

@Component
public class MyRabbitConsumer {//direct 直连模式消费端@RabbitListener(queues = "direct-buget-queue")public void directConsumer(String message) {System.out.println("direct 消息消费成功,message内容为:" + message);}}

@RabbitListener 注解满足同时监听多个队列的消息,如下:

@Component
public class MyRabbitConsumer {//direct 直连模式消费端@RabbitListener(queues = {"direct-buget-queue", "direct-buget-queue2"})public void directConsumer(String message) {System.out.println("direct 消息消费成功,message内容为:" + message);}}

@RabbitListener 的复杂使用

使用 @RabbitListener 绑定交换器、路由、队列,设置手动提交和监听容器的名称,代码如下:

@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "topic-buget-queue", durable = "true"),exchange = @Exchange(value = "topicExchange", type = ExchangeTypes.TOPIC),key = "topicRoutingKey"), ackMode = "MANUAL", containerFactory = "topicContainerFactory"
)
public void topicConsumer(String message) {System.out.println("topic topic-buget-queue 消息消费成功,message内容为:" + message);
}

@RabbitListener 注解的各个属性详解

了解了 @RabbitListener 注解的各个属性含义,可以根据我们需求灵活进行配置,属性含义解释如下:

@Target({ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@MessageMapping
@Documented
//可重复
@Repeatable(RabbitListeners.class)
public @interface RabbitListener {//id 为监听指定一个唯一标志String id() default "";//监听容器String containerFactory() default "";//要监听的队列名称String[] queues() default {};//监听队列的的详细信息 包括队列名称  是否持久化Queue[] queuesToDeclare() default {};//是否是独占模式boolean exclusive() default false;//指定监听容器的消费者线程的优先级String priority() default "";//指定RabbitAdmin  bean 的名称 用于声明式的队列绑定等操作String admin() default "";//用户声明队列和交换机的绑定关系QueueBinding[] bindings() default {};//监听容器组的名称String group() default "";//指定发生异常的时的返回策略String returnExceptions() default "";//指定处理异常的异常处理器String errorHandler() default "";//指定并发消费的线程数String concurrency() default "";//指定监听是否在容器启动时候启动String autoStartup() default "";//指定执行监听方法的 线程池  executorString executor() default "";//指定消息确认模式 String ackMode() default "";//指定发送回复消息的 ProcessorString replyPostProcessor() default "";//指定用于消息转换的 MessageConverter String messageConverter() default "";//指定回复消息的内容类型String replyContentType() default "";//指定是否使用转换器定义内容类型String converterWinsContentType() default "true";
}

如有错误的地方欢迎指出纠正。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com