I see, so message ID is not really meant to be used as identifier by client apps. We will try setting JMSCorellationId on sender, if thats not gonna work will probably redefine request-response mapper Thank you all for clarification!
чт, 3 окт. 2024 г. в 18:47, Robbie Gemmell <robbie.gemm...@gmail.com>: > Given the mentions of JMS and AMQP I would presume that > qpid-jms-client is being used. It will populate the JMSMessageID > header itself during send (unless configured not to) as per the JMS > requirements the field is set by provider-on-send. > Message.setJMSMessageID() (and most other header setters like it) is > exclusively for the use of JMS implementations for handling other > vendors message objects, it is not for applications to use to set a > MessageID on a sent message (if you try, the value will be overwritten > on send with the provider-populated value). > > Artemis handles STOMP messages internally using its Core protocol > message objects, so it is presumably converting the AMQP message into > a Core message on the way to the STOMP client. Qpid JMS uses a > string-based message-id field in the underlying AMQP message by > default. Core messages require a UUID message id, and so I expect it > is generating a new one at that conversion point. Qpid JMS can be > configured to use a pure UUID as the underlying AMQP message-id field, > setting URI option jms.messageIDPolicy.messageIDType=UUID . Though > JMSMessageID values must be prefixed with "ID:" so the client will > synthesize that locally for JMSMessageID, meaning you could still then > find that the JMSCorrelationID string you get back on the response > lacks that "ID:" prefix (since the Core JMS client would normally add > that to getJMSMessageID...but you are using a STOMP client). > > In fact, ignore all that, as I see the broker is generating a specific > formatted message-id for the STOMP messages. So you simply can't get > the original AMQP message-id on the STOMP receiver. > > Your most compatible route in JMS terms would be using the > JMSCorrelationID field to correlate your messages, setting the > JMSCorrelationID value on the request message before sending, getting > that value as the correlation-id on the reciever and setting that > value on the response message before replying, which the requester can > retrieve from JMSCorrelationID again on the response. > > As I see others have said already whilst I got interrupted during > typing this reply :) > > > Robbie > > On Thu, 3 Oct 2024 at 16:06, Мурад Байгильдин <baigildi...@gmail.com> > wrote: > > > > Hi, Justin! > > Sender sends message into request queue and expects response message in > > response queue, with response's JMSCorellationId header being set to > > message ID that was sent (and could not be read by responder app). > > Sender (java app) originally was not explicitly specifying message ID, > not > > really sure if it was set by library used or by the broker > > > > Calling msg.setJMSMessageId(msgId) with some manually generated value did > > reflect on userID property of the message, however it still could not be > > read by responder app via STOMP, unless > > msg.putStringProperty('some-header-name', msgId) was called > > > > As a solution for now we settled on manually putting message ID into > string > > properties > > > > чт, 3 окт. 2024 г. в 17:13, Justin Bertram <jbert...@apache.org>: > > > > > Can you clarify your use-case and how the message ID is being set on > the > > > client sending the message? > > > > > > Typically the message ID is set by the client implementation or by the > > > broker and it can also change in some circumstances so it's not > > > particularly meaningful to the messaging application. Generally > speaking we > > > recommend folks set their own unique ID if they're wanting to track > > > messages. > > > > > > > > > Justin > > > > > > On Thu, Oct 3, 2024 at 2:17 AM Мурад Байгильдин <baigildi...@gmail.com > > > > > wrote: > > > > > > > Hi, we ran into an issue when receiving messages via STOMP protocol. > > > > Message was sent by java application using JMSSerializer via AMQP > > > protocol, > > > > resulting in message id being stored in userID message property. When > > > > receiving this message via STOMP, the value of userID was not > present in > > > > any header, unless the sender app manually generates an id for the > > > message > > > > and passes it into some custom-named header. > > > > Could not find any related info on this property in the archive. > > > > Maybe it is possible to add a STOMP configuration flag, similar to > > > > stompEnableMessageId (stompEnableUserId e.g.), that would control if > a > > > > message's userID value is being passed into STOMP headers? > > > > > > > > artemis version 2.37.0 > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@activemq.apache.org > For additional commands, e-mail: users-h...@activemq.apache.org > For further information, visit: https://activemq.apache.org/contact > > >