[
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