Hello once again :) Here are some additional questions arisen from your answers. 1) As there are java example that does not make use of JMS objects, I suppose that QPID also furnish another AMQP implementation that is independent from JMS? 2) If it is, are both implementations equivalent and compliant with AMQP the same way? I am asking because using JMS, when you create a Consumer on a queue that is not declared as an administered object, this queue is created in the broker. I believe this a a normal JMS behaviour, but I have read somewhere that in AMQP, queues must be explicitly declared, what I understood by "if queues are not explicitly declared, they cannot be used".
Thank you. Best regards -----Message d'origine----- De : Gordon Sim [mailto:[email protected]] Envoyé : mercredi 19 août 2009 17:22 À : [email protected] Objet : Re: Mixing up AMQP QPID and JMS Leglise Yann wrote: > Thank you Gordon. > > Your answers helped, but I want to make it a little bit clearer about the > relation between QPID and JMS. > I can only see 2 possible interpretation of the relation between JMS and QPID > (one will necessarily be wrong): > 1) QPID relies on (i.e. make use of) a JMS implementation in order to > use the JMS services to satisfy the AMQP purposes, > 2) QPID actually IS a JMS implementation that directly includes the AMQP > required behaviour. Option 2 is the correct one. > This is confusing for me since in my java program, I am linked to a jms.jar > (gotten from the J2EE SDK), in association with the qpid jars, and I suppose > this jms.jar contains a JMS implementation (leading to the first > interpretation). > > So in the case 1), I cannot understand how a JMS object (that does not "know" > I am using a QPID jar) can interact with an AMQP broker (I mean, when I > invoke a send API on a javax.jms.MessageProducer, how is it that Wireshark > detects AMQP frames? The meaning of my question in my previous mail was to > understand how could the JMS objects (defined, according to me, in the > jms.jar) could interact with the QPID jars (I supposed that the AMQP frames > are sent by some classes of the QPID jars) since nothing is (apparently) made > to link JMS object with QPID classes). > > In case 2), why should I need using the jms.jar if the implementation already > exists in the QPID jars? > > The only explanation I can imagine is that the jms.jar is used only for the > interfaces like Connection, Session etc. some implementors of which resides > in QPID library that are used because using > org.apache.qpid.jndi.PropertiesFileInitialContextFactory in JNDI. Then, as > every used object (ConnectionFactory, Destination ...) are obtained through a > first QPID class implementing the InitialContext, this implementing class > also choose a QPID class implementing those interfaces (and so on for > Connection, Queue ...). This is what I guess, but I would like to have a > confirmation from someone who "knows". Yes, assuming you mean the geronimo-jms_1.1_spec-1.0.jar, that is correct. It contains only the interface definitions. --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected] --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
