Spring Boot Stomp-Transaction Sockjs: ERROR message=[Bad transaction] Invalid transaction identifier
Posted
技术标签:
【中文标题】Spring Boot Stomp-Transaction Sockjs: ERROR message=[Bad transaction] Invalid transaction identifier【英文标题】: 【发布时间】:2021-11-09 11:15:30 【问题描述】:我使用 Spring Boot 为 Rabbitmq 实现了 RelayMessageBroker,并按预期工作。我通过 SockJS 使用 javascript-Client 来订阅队列并接收/发送消息。
我只是在尝试使用 stomp 事务时遇到问题。
我的 JS 代码:
var tx = clientRef.client.begin();
clientRef.client.send("/queue/onnext",
transaction: tx.id,
durable:false,
exclusive:false,
"auto-delete":false
, 'test123');
tx.commit()
Spring 关闭连接并报错:
o.s.m.s.s.StompBrokerRelayMessageHandler : Received ERROR message=[Bad transaction], content-type=[text/plain], version=[1.0,1.1,1.2], content-length=[39] session=wajdofjf, user=test text/plain payload=Invalid transaction identifier: "tx-1"
【问题讨论】:
【参考方案1】:我自己找到了解决方案: sockjs 尝试通过连接
["CONNECT\naccept-version:1.1,1.0\nheart-beat:10000,10000\n\n\u0000"] -> stomp version 1.1.
我将其更改为 1.2 版,问题不再出现。
【讨论】:
以上是关于Spring Boot Stomp-Transaction Sockjs: ERROR message=[Bad transaction] Invalid transaction identifier的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Spring Boot 应用程序 pom 同时需要 spring-boot-starter-parent 和 spring-boot-starter-web?
《02.Spring Boot连载:Spring Boot实战.Spring Boot核心原理剖析》