Hi Dan,

since I did the last bigger updates on JMS many things have changed. So
I am not that familiar with the current code.

My problem is mainly with the conduit as I have a Eclipse RCP client
where I did not manage to get Camel running. So I used pure CXF and ran
into the strange behaviour of my existing camel services.
I think what I need is a conduit that sets the correlation id to the
message id when sending the message and an open selector that accepts
all messages as reply. Alternatively the selector could of course also
be set to correlationid = message id of each request but this would mean
that one consumer per exchange sent would be needed.

Your snippet from the destination brought me another idea though. If I
switch the service to pure CXF I think a pure CXF client as well as a
camel client with the problematic "useMessageIDAsCorrelationID" setting
could work.

Greetings

Christian


Daniel Kulp schrieb:
Christian,

Aren't you the CXF JMS expert?   ;-)

Seriously, are you talking the JMS conduit or destination?

If talking about the conduit, this MAY be possible with the latest 2.3/trunk code. There is some logic in there for using the JMS message ID for the selector.

For the destination, on trunk, I see:

public String determineCorrelationID(javax.jms.Message request) throws JMSException {
        String correlationID = request.getJMSCorrelationID();
        if (correlationID == null || "".equals(correlationID)) {
            correlationID = request.getJMSMessageID();
        }
        return correlationID;
    }

so it looks like that would use the messageId if a correlation ID was not sent.

That all said, I'm just looking at trunk code right now. I know things are different on 2.2.x.


Dan


On Sat January 2 2010 9:14:59 am Christian Schneider wrote:
Hi all,

we are using camel and cxf together for some projects. Camel does the
jms protocol and cxf the rest. Unfortunately we used the option
"useMessageIDAsCorrelationID" that camel provides.
This option makes camel always use the message id as correlation id even
when the client sets another correlation id. I think this is kind of a
bug (see http://issues.apache.org/activemq/browse/CAMEL-2249).

The problem now is that when cxf does jms itself as far as I know
currently does not allow to use the message id as correlation id. So it
can not communicate with camel. Of course we could turn off the feature
in camel but this would mean that we had to do it for all services and
clients at one point of time.

So my question is: Did I miss something and it is possible to use the
message id as correlation id? If it is not possible already then do you
think it would make sense to add this option?

Greetings

Christian




Reply via email to