Spring Rocketmq 事务消息 消费者使用注解消费

本文详细解释了RocketMQMessageListener的各种参数,如消费模式(CONCURRENTLY/ORDERLY)、消息模式(CLUSTERING/BROADCASTING)、消费者组和主题,以及代码示例,特别指出顺序处理与广播模式的兼容性限制。
摘要由CSDN通过智能技术生成

目录

1、 RocketMQMessageListener参数讲解

2、参数说明:

3、代码示例


1、 RocketMQMessageListener参数讲解

@RocketMQMessageListener事务消息监听器

2、参数说明:

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

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

/**
     * 控制可以选择哪个消息
     */
    String selectorExpression() default "*";
 

 	// 同步顺序消息 根据下面使用方式使用即可,在主题上面拼接
    rocketMQTemplate.syncSendOrderly("MQ_TOPIC:user", info);

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

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

3、代码示例

//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)
public class MqConsumer implements RocketMQListener<MessageExt>, RocketMQPushConsumerLifecycleListener {
    int i = 0;

    //消息接收处理方法
    @Override
    public void onMessage(MessageExt message) {
        String msg = null;
        try {
            msg = new String(message.getBody(), "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        System.err.println("MqConsumer1111111111 接收到消息:tag:" + message.getTags() + "   count:" + (i++)
                + "  QueueId:" + message.getQueueId() + " 消息[body]:" + msg);
    }


    //    该方法重写消息监听器的属性
      @Override
    public void prepareStart(DefaultMQPushConsumer defaultMQPushConsumer) {
        // 设置消费者消息重试次数
        defaultMQPushConsumer.setMaxReconsumeTimes(3);
        //        设置实例名称
        defaultMQPushConsumer.setInstanceName("mqconsumer1");
    }

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

参考:Spring Rocketmq 事务消息 @RocketMQMessageListener注解的使用-CSDN博客

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Spring Boot项目中集成RocketMQ并实现消费者确认,你可以按照以下步骤进行操作: 1. 首先,确保在你的pom.xml文件中引入了RocketMQ的相关依赖项。这可以通过在pom.xml文件中添加以下代码来实现: ``` <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency> ``` 这将使你能够在Spring Boot项目中使用RocketMQ的功能。 2. 接下来,你需要在你的Spring Boot应用程序中创建一个消费者类。你可以使用@RocketMQMessageListener注解来标记这个类,并指定要消费的主题和消费者组。在这个类中,你可以编写逻辑来处理接收到的消息。 3. 在消费者类中,你可以使用@RocketMQTransactionListener注解来标记一个用于确认消息的方法。这个方法将在消费者成功处理消息后被调用。你可以在这个方法中进行一些后续处理,比如提交数据库事务等。同时,你还可以在此方法中抛出异常来触发消息回滚。 4. 在消费者类中,你可以使用@RocketMQMessageListener注解中的consumerGroup属性来指定消费者组。这将确保多个消费者在同一组中共享消息消费进度。这样,只有当所有消费者都成功处理消息时,消息才会被标记为已消费,并从RocketMQ服务器中删除。 通过这些步骤,你就可以在Spring Boot项目中集成RocketMQ,并实现消费者确认的功能。请根据你的实际需求和业务逻辑进行相应的配置和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringBoot集成RocketMQ事务消息](https://blog.csdn.net/ctwy291314/article/details/128659943)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T_BUG袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值