rocketmq-starter版本:2.2.1
發送的代碼:
@Test public void test1() throws Exception { // 事務id String transactionId = UUID.randomUUID().toString(); info(">>> 發送半消息!transactionId:{}", transactionId); // 發送事務消息 TransactionSendResult sendResult = mqTemplate.sendMessageInTransaction( "topic-3_dev:tag1" // 給消費者的參數 , MessageBuilder.withPayload(1) .setHeader(RocketMQHeaders.TRANSACTION_ID, transactionId) .build() // 給本地事務的參數 , 2 ); info(">>> 發送半消息結果:{}", toJson(sendResult)); }
在測試rocketmq事務消息時,創建了一個事務監聽器,使用默認的RocketMQTemplate實例,在junit中測試消息發送時,報如題錯誤!
花了半天時間,找了很多文章對比發送的代碼,都沒有找到原因。
後來,我就懷疑是junit的問題。就把發送的代碼放到Controller中運行,結果就成功了。
junit用來測試確實方便,但畢竟是模擬的運行環境,和真實運行環境還是會有區別,下次再遇到類似詭異的問題,在junit外測試一下,也許就成功了!