[ 
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


Reply via email to