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外测试一下,也许就成功了!

 

posted @ 2023-06-09 19:32  歪头杀的小三花  阅读(265)  评论(0编辑  收藏  举报