Thanks Rob & Robbie. That's quick stuff.
I did manage to do an ant build (was all a bit fingers-crossed, since I'd
never even touched subversion before - but it seemed to work), but it was
good to have the build from the experts to have to try too!
I will need to do some more testing tomorrow, but one thing I did notice so
far is that in a basic test case (just a single-protocol, single
context/session AMQP 1.0 JMS client producer), the client seems to hang on
the producer.send() call with this 0.27 client (with the ActiveMQ broker on
its AMQP transport connector). The message has indeed been placed in the
queue nominated on the broker, since if I CTRL-C out of the producer client
and run a simple consumer client (again linked against the new 0.27 API test
.jar), the message is subsequently received seemingly intact (at least the
TextMessage body is as expected).
More news tomorrow, but I wanted you to know this bit.
Thanks again for your help thus far.
Mark.
-----Original Message-----
From: Robbie Gemmell
Sent: Wednesday, February 19, 2014 5:09 PM
To: [email protected]
Subject: Re: New User JMS API Questions
I forced the nightly release job to run a little early, you should now find
binaries with the change included at:
https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-Java-Artefact-Release/lastSuccessfulBuild/artifact/trunk/qpid/java/amqp-1-0-client-jms/release/
Alternatively you can use the maven artefacts from the snapshots repo at:
https://repository.apache.org/content/repositories/snapshots/
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-client-jms</artifactId>
<version>0.28-SNAPSHOT</version>
</dependency>
Robbie
On 19 February 2014 20:53, Rob Godfrey wrote:
OK, I've checked in a change to the trunk codebase so that the Qpid
DestinationImpl object no longer implements javax.jms.Queue and
javax.jms.Topic interfaces... I think this should help ActiveMQ to cope
with it...
If you want to test this you'll need to check out the source code from
here:
http://svn.apache.org/repos/asf/qpid/trunk/qpid/
Go to the java subdirectory, and build using ant (e.g. "ant build"). The
built libraries will then be in the build/lib subdirectory (you'll only
want the amqp-1-0-*0.27.jar files).
Let me know if you manage to get it working or encounter any more issues.
Cheers,
Rob
and
On 19 February 2014 21:42, Rob Godfrey wrote:
> OK... looking up their code tree a bit I see why it gets confused by the
> Qpid destination... because the Qpid AMQP 1.0 DestinationImpl implements
> both Queue and Topic... I'm not sure why it does that (probably a
> historical artefact). If I change that in Qpid, it might make ActiveMQ
> happier...
>
> -- Rob
>
>
> On 19 February 2014 21:10, Rob Godfrey wrote:
>
>> Ah interesting... it's ActiveMQ code that is throwing the exception...
As
>> per the JMS contract, the Qpid message producer is setting the
>> JMSDestination on the message it is sending (in this case a foreign
>> message, namely an ActiveMQ message). The ActiveMQ message class
doesn't
>> seem to like having a destination set on it which isn't one that it can
>> resolve (even though it doesn't need to). The code in question appears
to
>> be here in the activeMQ codebase:
>>
>>
>>
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.6.0/org/apache/activemq/command/DefaultUnresolvedDestinationTransformer.java
>>
>> It looks like ActiveMQ is requiring Queue and Topic implementations to
>> implement the methods isQueue() and/or isTopic()... but these are not
part
>> of the API defined for JMS Queues and topics AFAIK (see
>> http://docs.oracle.com/javaee/6/api/javax/jms/Queue.html for example).
>> So I think that ActiveMQ is in error / violation of the JMS spec here
>> (though Robbie who has been reading the JMS spec carefully lately may
>> be
>> able to give better advice). If ActiveMQ is absolutely determined to
turn
>> the destination object into an ActiveMQ one, I'm not entirely sure why
the
>> ActiveMQ code doesn't fall back to an instanceof test to determine
whether
>> the the passed in Destination is a Queue (or if not a Topic)...
>>
>> -- Rob
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]