1. 程式人生 > 其它 >Springboot 快速整合RocketMq

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 只有一個消費者會消費,類似於負載均衡

消費者如果存在一個為廣播模式,消費模式都會廣播模式