当前位置:   article > 正文

RocketMQ 一个topic 多个消费者只有一个消费的问题_rocketmq多个消费者怎么配置

rocketmq多个消费者怎么配置

前言

  • 很多时候,我们会在多个地方同时订阅一个 topic,但是发现消费者只能执行一个
  • 后注册消费者会顶替之前注册的消费者

原因

  • subscribeTable subscriptionInner 方法中,是使用 Map 集合的方式存储topic订阅者
  • 存储格式 大概{group : topic}
  • Map 的特性就是 Key 不能重复,所以相同的 Key 会直接替换

解决方法

  • 更改 subscribeTable subscriptionInner 方法存储的 Key
  • 也就是创建多个消费组,同时订阅一个topic

案例

  • 消费者1 yml 配置
rocketmq:
  name-server: 192.168.112.140:9876
  producer:
    group: member_synchronization_group
  • 1
  • 2
  • 3
  • 4
  • 消费者 1 实现消费
@Service
@RocketMQMessageListener(topic = "mysql-redis-topic", consumerGroup = "member_synchronization_group")
public class MemberListener implements RocketMQListener<String> {
    @Autowired
    private RedisUtil redisUtil;
    @Override
    public void onMessage(String message) {
        System.out.println("接收消息:" + message);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

消费者 2 yml 配置

rocketmq:
  name-server: 192.168.112.140:9876
  producer:
    group: goods_synchronization_group
  • 1
  • 2
  • 3
  • 4
  • 消费者 2 实现消费
@Service
@RocketMQMessageListener(topic = "mysql-redis-topic", consumerGroup = "goods_synchronization_group")
public class GoodsListener implements RocketMQListener<String> {
    @Autowired
    private RedisUtil redisUtil;
    @Override
    public void onMessage(String message) {
        System.out.println(message);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/580465
推荐阅读
相关标签
  

闽ICP备14008679号