Springboot 快速集成RocketMq

Springboot 快速集成RocketMq

1. 增加pom文件

<dependency>
 <groupId>org.hongxi</groupId>
 <artifactId>rocketmq-spring-boot-starter</artifactId>
</dependency>

2. 配置

rocketmq:
name-server: 192.168.0.84:9876
producer:
 group: test-group
sendMsgTimeoutMillis: 3000
reconsumeTimes: 3

3. 登录rocketmq管理后台添加topic(operation-topic)

4. 生产者使用

@Autowired
RocketMQTemplate rocketMQTemplate;

@Test
public void sendHelloWorld() {
    SendResult result = rocketMQTemplate.syncSend("operation-topic", "hello world");
    log.info("发送结果:{}", JSON.toJSONString(result));
}

5. 消费者使用

@Component
@RocketMQMessageListener(topic = "operation-topic", //topic主题
        consumerGroup = "consumer-group",          //消费组
        messageModel = MessageModel.CLUSTERING,
        consumeMode = ConsumeMode.ORDERLY)
@Slf4j
public class MqTestListener implements RocketMQListener<String> {

    @Override
    public void onMessage(String message) {
        log.info("接受到消息:{}", message);
    }
}

6. 注意事项

如何使用tag

/**
  * Same to {@link #syncSend(String, Message)}.
  *
  * @param destination formats: `topicName:tags`
  * @param payload     the Object to use as payload
  * @return {@link SendResult}
  */
public SendResult syncSend(String destination, Object payload) {
    return syncSend(destination, payload, producer.getSendMsgTimeout());
}

这里可以看到 destination = topicName:tags

消费模式

  • 广播模式 MessageModel.BROADCASTING 所有消费者都会收到消息
  • 集群模式 MessageModel.CLUSTERING 只有一个消费者会消费,类似于负载均衡

消费者如果存在一个为广播模式,消费模式都会广播模式

posted @ 2021-08-09 16:23  雾里看花的少年  阅读(751)  评论(0编辑  收藏  举报