/ / Chyba pri potvrdzovaní správy Stomp - jar, websocket, activemq, stomp

Chyba pri potvrdzovaní správy stomp - jar, websocket, activemq, stomp

Používame jarné stomp cez websockets, podporované ActiveMQ 5.11.1. Keď klient ACKs zobrazí správu, dostanem túto výnimku:

"<<< ERROR

Content-Type: text / plain správa: Neočakávané ACK prijaté pre ID správy [IDcjanus-61128-1430365808166-2c1c-1c1c1] Obsah-dĺžka: 722

org.apache.activemq.transport.stomp.ProtocolException: Neočakávaná ACK prijatá pre ID správy [ID: janus-61128-1430365808166-2: 1: -1: 1: 1] na org.apache.activemq.transport.stomp.ProtocolConverter.onStompAck (ProtocolConverter.java:462) at org.apache.activemq.transport.stomp.ProtocolConverter.onStompCommand (ProtocolConverter.java:247) na org.apache.activemq.transport.stomp.StompTransportFilter.onCommand (StompTransportFilter.java:75) na org.apache.activemq.transport.TransportSupport.doConsume (TransportSupport.java:83) at org.apache.activemq.transport.tcp.TcpTransport.doRun (TcpTransport.java:214) na adrese org.apache.activemq.transport.tcp.TcpTransport.run (TcpTransport.java:196) na adrese java.lang.Thread.run (Thread.java:744)

Tu je kód klienta:

  var sub_id = stompClient.subscribe("/user/guest/msg", function(greeting){
x = JSON.parse(greeting.body);
var message_id = greeting.headers["message-id"]
stompClient.ack(message_id, sub_id);
}, {ack: "client"});

Snažil som sa nastaviť ack na klienta-individuálne, a to nepomohlo. Môže mi niekto povedať, čo mi chýba / čo robí zle?

odpovede:

0 pre odpoveď č. 1

Ktorú verziu STOMP (1.0, 1.1 alebo 1.2) používa pripojenie? STOMP 1.2 má a zmena:

Rámec ACK MUSÍ obsahovať hlavičku id, ktorá zodpovedá hlavičke ack hlavičky Potvrdenie správy.

Odporúčam zachytiť STOMP prevádzku s paketom sniffer alebo debugger a porovnať hlavičky so špecifikáciou.