The rocketMQTemplate does not exist TransactionListener

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外測試一下,也許就成功了!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章