0


Spring Rocketmq 事务消息 @RocketMQMessageListener注解的使用

Spring Rocketmq 事务消息 @RocketMQMessageListener注解的使用


1、 RocketMQMessageListener参数讲解

@RocketMQMessageListener事务消息监听器

2、参数一 :consumeMode

/**
     *控制消费模式,您可以选择并发或有序接收消息。
     */ConsumeModeconsumeMode()defaultConsumeMode.CONCURRENTLY;

3、参数二:messageModel

/**
      * 控制消息模式,
      * 广播模式:所有消费者都能接受到消息
      * 集群模式:无论有多少个消费者,只有一个消费者能够接收到消息。
      */MessageModelmessageModel()defaultMessageModel.CLUSTERING;

3、参数三:selectorExpression

/**
     * 控制可以选择哪个消息
     */StringselectorExpression()default"*";// 同步顺序消息 根据下面使用方式使用即可,在主题上面拼接
    rocketMQTemplate.syncSendOrderly("MQ_TOPIC:user", info);

4、参数四:consumerGroup

/**
      *
      *概念:消费者组(多个消费者) 此参数相同即为同一个消费者组
      *作用:集群模式负载均衡的实现,广播模式的通知的实现
      *
      */StringconsumerGroup();

5、参数:topic

/**
     * Topic name. 主题
     * 指该消费者组所订阅的消息服务
     * 
     */Stringtopic();

6、代码示例

//consumeMode = ConsumeMode.ORDERLY,messageModel = MessageModel.BROADCASTING,这样会报 messageModel BROADCASTING does not support ORDERLY message!@Service("MqConsumer")//@RocketMQMessageListener事务消息监听器//consumeMode 消费模式,默认值 ConsumeMode.CONCURRENTLY 并行处理;ConsumeMode.ORDERLY 按顺序处理//messageModel 消息模型,默认值 MessageModel.CLUSTERING 集群;MessageModel.BROADCASTING 广播@RocketMQMessageListener(consumerGroup ="testmq2222", topic ="MQ_TOPIC",//selectorType = SelectorType.TAG,//        selectorExpression = "user",
        consumeMode =ConsumeMode.ORDERLY,
        messageModel =MessageModel.CLUSTERING)publicclassMqConsumerimplementsRocketMQListener<MessageExt>,RocketMQPushConsumerLifecycleListener{int i =0;//消息接收处理方法@OverridepublicvoidonMessage(MessageExt message){String msg =null;try{
            msg =newString(message.getBody(),"utf-8");}catch(UnsupportedEncodingException e){
            e.printStackTrace();}System.err.println("MqConsumer1111111111 接收到消息:tag:"+ message.getTags()+"   count:"+(i++)+"  QueueId:"+ message.getQueueId()+" 消息[body]:"+ msg);}//    该方法重写消息监听器的属性@OverridepublicvoidprepareStart(DefaultMQPushConsumer defaultMQPushConsumer){// 设置消费者消息重试次数
        defaultMQPushConsumer.setMaxReconsumeTimes(3);//        设置实例名称
        defaultMQPushConsumer.setInstanceName("mqconsumer1");}

注意:顺序处理不能和广播模式同时使用,应该广播模式是属于并发的,而顺序是强调FIFO原则,广播模式不能保证顺序一致性。


本文转载自: https://blog.csdn.net/weixin_51442090/article/details/128659127
版权归原作者 程序员 小宇 所有, 如有侵权,请联系我们删除。

“Spring Rocketmq 事务消息 @RocketMQMessageListener注解的使用”的评论:

还没有评论