Springboot 快速整合RocketMq
阿新 • • 發佈:2021-08-09
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 只有一個消費者會消費,類似於負載均衡
消費者如果存在一個為廣播模式,消費模式都會廣播模式