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外测试一下,也许就成功了!
标签:事务,TransactionListener,发送,does,exist,消息,测试,transactionId,junit From: https://www.cnblogs.com/kagome2014/p/17470116.html