[ https://issues.apache.org/jira/browse/CXF-2760?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12857104#action_12857104 ]
Seumas Soltysik commented on CXF-2760: -------------------------------------- As stated in the MQSeries world clients acting as request/reply servers often use the paradigm of using the messageID of the incoming message as the correlationID of the outgoing message. This means that a CXF client interacting with an MQSeries "server" needs to be able to correlate the request and the reply using the MessageID as opposed to a generated CorrelationID. The problem is that the MessageID for a JMS message being sent from a CXF client is not available until after the send() occurs. Therefore the JMSConduit needs to access the MessageID after the send(). To get access to the Message/MessageID, I had to create a non-anonymous MessageCreater to get access to the Message through a data member in the static class. At this point, the MessageID can be inserted into the correlation Map along with the Exchange. In the case where the reply message is sent from the server to a static Queue, the JMSConduit needs to ensure that it is only getting messages that it sent and not other messages. The idea behind the patch is to create a JMSListener on a per thread basis and then update the message selector to use the MessageID for each request/reply. Since the cache level on the listener is set to not cache consumers, a new consumer will be created using a new message selector after a send() from the JMSConduit. One downside of this is that a new consumer is created before every receive() which occurs every second by default. In the onMessage() call there is no need to wait on the send() being completed as the reply message cannot be received until the message selector is set after calling send(). > implement useMessageIDAsCorrelationID for JMS Client > ---------------------------------------------------- > > Key: CXF-2760 > URL: https://issues.apache.org/jira/browse/CXF-2760 > Project: CXF > Issue Type: New Feature > Components: Transports > Affects Versions: 2.1.4 > Reporter: Seumas Soltysik > Fix For: 2.1.4 > > Attachments: cxf-2760.patch > > > MQSeries servers often use the message ID of and incoming message as the > correlation ID for an outgoing message. In order for a CXF client to > communicate with an MQSeries server it needs to correlate the outgoing > message with the incoming message using the message ID of the sent message. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira