@RabbitListener 注解详解

前言:

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

RabbitMQ 系列文章传送门

RabbitMQ 的介绍及核心概念讲解

@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 "";
	
	//指定执行监听方法的 线程池  executor
    String executor() default "";
	
	//指定消息确认模式 
    String ackMode() default "";
	
	//指定发送回复消息的 Processor
    String replyPostProcessor() default "";
	
	//指定用于消息转换的 MessageConverter 
    String messageConverter() default "";
	
	//指定回复消息的内容类型
    String replyContentType() default "";
	
	//指定是否使用转换器定义内容类型
    String converterWinsContentType() default "true";
}

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

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值