Hi Rajith. Back again sooner than expected :) My question is how can I create a destination 'dynamically'? meaning that I need to get my subscription destinations not only statically from the JNDI properties, but through a destination address that I construct? Is there any standard practice in qpid that I can follow?
Thanks, Siamak On Thu, May 26, 2011 at 4:41 PM, Rajith Attapattu <[email protected]>wrote: > Your Welcome ! > > Rajith > > On Thu, May 26, 2011 at 4:21 PM, Siamak Kolahi <[email protected]> > wrote: > > Thanks Rajith. It works and I am fine now > > > > On Thu, May 26, 2011 at 3:29 PM, Rajith Attapattu <[email protected] > >wrote: > > > >> The C++ (python, C#) and JMS clients can recognize text,map and of > >> course messages with binary content. > >> If you set the correct content type on the sending end, then the > >> receiving side will identify the correct message type. > >> > >> Have a look at the MapSender and MapReceiver examples here (JMS). > >> > >> > https://svn.apache.org/repos/asf/qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ > >> > >> Also have a look at map_sender.cpp and map_receiver.cpp here (C++). > >> > https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/examples/messaging/ > >> > >> A C++ receiver should be able to receive a JMS map message > >> (javax.jms.MapMessage) sent by the jms client and vice versa. > >> If you have any further questions, please feel free to ask. > >> > >> Regards, > >> > >> Rajith > >> > >> On Thu, May 26, 2011 at 3:10 PM, Siamak Kolahi <[email protected] > > > >> wrote: > >> > Thanks Rajith. It is working fine now. My next question is what is the > >> best > >> > way to get the body of the message sent using Messaging APIs in other > >> > languages? whats the relationship between the structure of the Message > >> > instance in C++/C#, and the javax.jms.Message class that I am > receiving? > >> > > >> > Currently the message that I receive is of type JMSBytesMessage. > >> > > >> > Thanks, > >> > Siamak > >> > > >> > On Wed, May 25, 2011 at 2:26 PM, Rajith Attapattu <[email protected] > >> >wrote: > >> > > >> >> I am very for sending you down a rat hole. > >> >> The issue here is the double quotes. The address parser treats the > >> >> entire thing as the queue name hence the exception. > >> >> Get rid of the double quotes and you should be fine. > >> >> (I tested this with the 0.8 release just to make sure.) > >> >> > >> >> Again I am very sorry for giving the wrong advise about the double > >> quotes. > >> >> > >> >> Rajith > >> >> > >> >> On Wed, May 25, 2011 at 1:34 PM, Siamak Kolahi < > [email protected] > >> > > >> >> wrote: > >> >> > Another attempt to get an input on this problem I am facing. Here > is > >> my > >> >> > destination string: > >> >> > > >> >> > destination.header = "beip.subscription; {create:always, delete: > >> always, > >> >> > node:{x-bindings:[{exchange:'amq.match', arguments:{x-match:any, > >> >> > 'userid':10}}]}}" > >> >> > > >> >> > and when I am trying to create consumer: > >> >> > MessageConsumer messageConsumer = > >> >> > session.createConsumer(destination); > >> >> > > >> >> > I get the following exception: > >> >> > Caused by: org.apache.qpid.AMQException: The name > 'beip.subscription; > >> >> > {create:always, delete: always, > >> node:{x-bindings:[{exchange:'amq.match', > >> >> > arguments:{x-match:any, userid:10}}]}}' supplied in the address > >> doesn't > >> >> > resolve to an exchange or a queue > >> >> > at > >> >> > > >> >> > >> > org.apache.qpid.client.AMQSession_0_10.handleAddressBasedDestination(AMQSession_0_10.java:1180) > >> >> > at > >> >> > > >> org.apache.qpid.client.AMQSession.registerConsumer(AMQSession.java:2796) > >> >> > at > >> org.apache.qpid.client.AMQSession.access$500(AMQSession.java:120) > >> >> > at > >> org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:1989) > >> >> > > >> >> > I am using 0.8 through JMS and JNDI properties. > >> >> > Any help/input would be much appreciated. Rajith? > >> >> > > >> >> > Thanks, > >> >> > Siamak > >> >> > > >> >> > > >> >> > On Sun, May 22, 2011 at 12:44 PM, Siamak Kolahi < > >> [email protected] > >> >> >wrote: > >> >> > > >> >> >> So I am using 0.8 now and parsing is fine. Now I get a different > >> >> exception > >> >> >> saying > >> >> >> "The name 'mysubscription; {create:always, delete: always, > >> >> >> node:{x-bindings:[{exchange:' > >> >> >> amq.match', arguments:{'x-match':any, 'userid':10}}]}}' supplied > in > >> the > >> >> >> address doesn't resolve to an exchange or a queue" > >> >> >> > >> >> >> > >> >> >> While I am sure my exchange exists, since its the default header > >> >> exchange. > >> >> >> Any idea what I am missing here? > >> >> >> > >> >> >> and this is how my property look like: > >> >> >> destination.header = "subscription; {create:always, delete: > always, > >> >> >> node:{x-bindings:[{exchange:'amq.match', arguments:{'x-match':any, > >> >> >> 'userid':10}}]}}" > >> >> >> > >> >> >> > >> >> >> Thanks, > >> >> >> Siamak > >> >> >> > >> >> >> > >> >> >> On Fri, May 20, 2011 at 8:31 AM, Rajith Attapattu < > >> [email protected] > >> >> >wrote: > >> >> >> > >> >> >>> As mentioned 0.6 does not support the new address syntax. > >> >> >>> From 0.8 on wards support the new address syntax. > >> >> >>> > >> >> >>> Make sure you have the correct jar files in the patch. > >> >> >>> My recommendation is to move to the 0.10 release. > >> >> >>> > >> >> >>> Rajith > >> >> >>> > >> >> >>> On Thu, May 19, 2011 at 6:08 PM, qpid user 2 < > [email protected] > >> > > >> >> >>> wrote: > >> >> >>> > I added the double quotes around it and still same error. > >> >> >>> > Is there any difference in the grammars? I am currently using > 0.6 > >> and > >> >> >>> 0.8 > >> >> >>> > and they both give me same error. For some coordination issues > >> with > >> >> >>> others > >> >> >>> > in the team, I cant move on to use 0.10 at this moment :) > >> >> >>> > > >> >> >>> > > >> >> >>> > On Thu, May 19, 2011 at 5:55 PM, Rajith Attapattu < > >> >> [email protected] > >> >> >>> >wrote: > >> >> >>> > > >> >> >>> >> 1. Two issues. It looks like you have an older version where > the > >> >> >>> >> default syntax is Binding URL. > >> >> >>> >> So which version are you using? I'd recommend using the > >> latest > >> >> >>> >> release (0.10 release). > >> >> >>> >> > >> >> >>> >> 2. Once you fix your first problem, then use double quotes > around > >> >> your > >> >> >>> >> address string > >> >> >>> >> > >> >> >>> >> destination.header = "my-subscription-queue; {create:always, > >> >> >>> >> node:{x-declare:{auto-delete:True}, > >> >> >>> >> x-bindings:[{queue:my-subscription-queue, > exchange:'amq.match', > >> >> >>> >> arguments:{'x-match':any, 'userid':10}}]}}" > >> >> >>> >> > >> >> >>> >> Regards, > >> >> >>> >> > >> >> >>> >> Rajith > >> >> >>> >> > >> >> >>> >> On Thu, May 19, 2011 at 5:36 PM, qpid user 2 < > >> [email protected] > >> >> > > >> >> >>> >> wrote: > >> >> >>> >> > Guys. I am using the following destination address in my > jndi > >> >> >>> property, > >> >> >>> >> as > >> >> >>> >> > advised: > >> >> >>> >> > destination.header = my-subscription-queue; {create:always, > >> >> >>> >> > node:{x-declare:{auto-delete:True}, > >> >> >>> >> > x-bindings:[{queue:my-subscription-queue, > exchange:'amq.match', > >> >> >>> >> > arguments:{'x-match':any, 'userid':10}}]}} > >> >> >>> >> > > >> >> >>> >> > but I am getting a parsing error when parsing for context, > as > >> >> >>> follows. Am > >> >> >>> >> I > >> >> >>> >> > missing anything? > >> >> >>> >> > > >> >> >>> >> > > >> >> >>> >> > WARNING: Unable to create > >> destination:java.net.URISyntaxException: > >> >> >>> Error > >> >> >>> >> > occured while parsing URL at index 182: > my-subscription-queue; > >> >> >>> >> > {create:always, node:{x-declare:{auto-delete:True}, > >> >> >>> >> > x-bindings:[{queue:my-subscription-queue, > exchange:'amq.match', > >> >> >>> >> > arguments:{'x-match':any, 'userid':10}}]}}%^ > >> >> >>> >> > java.net.URISyntaxException: Error occured while parsing URL > at > >> >> index > >> >> >>> >> 182: > >> >> >>> >> > my-subscription-queue; {create:always, > >> >> >>> >> node:{x-declare:{auto-delete:True}, > >> >> >>> >> > x-bindings:[{queue:my-subscription-queue, > exchange:'amq.match', > >> >> >>> >> > arguments:{'x-match':any, 'userid':10}}]}}%^ > >> >> >>> >> > at > >> >> >>> >> > >> >> org.apache.qpid.url.BindingURLParser.<init>(BindingURLParser.java:88) > >> >> >>> >> > at > >> >> >>> >> > > >> >> >>> > >> >> > org.apache.qpid.url.AMQBindingURL.parseBindingURL(AMQBindingURL.java:58) > >> >> >>> >> > at > >> >> org.apache.qpid.url.AMQBindingURL.<init>(AMQBindingURL.java:53) > >> >> >>> >> > at > >> >> >>> >> > > >> >> >>> >> > >> >> >>> > >> >> > >> > org.apache.qpid.jndi.PropertiesFileInitialContextFactory.createDestination(PropertiesFileInitialContextFactory.java:241) > >> >> >>> >> > at > >> >> >>> >> > > >> >> >>> >> > >> >> >>> > >> >> > >> > org.apache.qpid.jndi.PropertiesFileInitialContextFactory.createDestinations(PropertiesFileInitialContextFactory.java:160) > >> >> >>> >> > at > >> >> >>> >> > > >> >> >>> >> > >> >> >>> > >> >> > >> > org.apache.qpid.jndi.PropertiesFileInitialContextFactory.getInitialContext(PropertiesFileInitialContextFactory.java:117) > >> >> >>> >> > at > >> >> >>> >> > > >> >> >>> > >> >> > javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667) > >> >> >>> >> > at > >> >> >>> >> > > >> >> >>> > >> javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) > >> >> >>> >> > at > javax.naming.InitialContext.init(InitialContext.java:223) > >> >> >>> >> > at > >> javax.naming.InitialContext.<init>(InitialContext.java:197) > >> >> >>> >> > at > >> >> >>> >> > > >> >> >>> >> > >> >> >>> > >> >> > >> > rim.core.instrumentation.subscription.Subscription.main(Subscription.java:37) > >> >> >>> >> > Caused by: java.lang.ArrayIndexOutOfBoundsException: 182 > >> >> >>> >> > at > >> >> >>> >> > > >> >> >>> >> > >> >> >>> > >> >> > >> > org.apache.qpid.url.BindingURLParser.extractExchangeName(BindingURLParser.java:218) > >> >> >>> >> > at > >> >> >>> >> > >> org.apache.qpid.url.BindingURLParser.next(BindingURLParser.java:137) > >> >> >>> >> > at > >> >> >>> >> > >> >> org.apache.qpid.url.BindingURLParser.<init>(BindingURLParser.java:70) > >> >> >>> >> > ... 10 more > >> >> >>> >> > > >> >> >>> >> > > >> >> >>> >> > Thanks > >> >> >>> >> > Siamak > >> >> >>> >> > > >> >> >>> >> > > >> >> >>> >> > > >> >> >>> >> > On Thu, May 19, 2011 at 10:55 AM, Gordon Sim < > [email protected]> > >> >> >>> wrote: > >> >> >>> >> > > >> >> >>> >> >> On 05/19/2011 03:53 PM, Rajith Attapattu wrote: > >> >> >>> >> >> > >> >> >>> >> >>> On Thu, May 19, 2011 at 10:04 AM, Gordon Sim< > [email protected] > >> > > >> >> >>> wrote: > >> >> >>> >> >>> > >> >> >>> >> >>>> On 05/19/2011 02:36 PM, qpid user 2 wrote: > >> >> >>> >> >>>> > >> >> >>> >> >>>>> > >> >> >>> >> >>>>> So any input on this? I am trying to construct a header > >> >> exchange > >> >> >>> >> >>>>> subscription using JMS. How would the destination and > jndi > >> >> >>> properties > >> >> >>> >> >>>>> look > >> >> >>> >> >>>>> like? > >> >> >>> >> >>>>> > >> >> >>> >> >>>> > >> >> >>> >> >>>> For python or c++ the following address is an example of > >> what > >> >> you > >> >> >>> >> want: > >> >> >>> >> >>>> > >> >> >>> >> >>>> my-headers-exchange; > >> >> >>> >> >>>> {link:{x-bindings:[{arguments:{'x-match':all,a:b,c:d}}]}} > >> >> >>> >> >>>> > >> >> >>> >> >>>> That is assuming you have created the headers exchange > named > >> >> >>> >> >>>> my-headers-exchange already, e.g. with qpid-config. This > >> will > >> >> >>> match > >> >> >>> >> any > >> >> >>> >> >>>> message with both a header keyed 'a' with value 'b' and a > >> >> header > >> >> >>> keyed > >> >> >>> >> >>>> 'c' > >> >> >>> >> >>>> with value 'd'. > >> >> >>> >> >>>> > >> >> >>> >> >>>> Unfortunately it would appear there is a bug in the JMS > >> client > >> >> >>> >> preventing > >> >> >>> >> >>>> this from working there. ( > >> >> >>> >> >>>> https://issues.apache.org/jira/browse/QPID-3265) > >> >> >>> >> >>>> > >> >> >>> >> >>>> An alternative address would be: > >> >> >>> >> >>>> > >> >> >>> >> >>>> my-subscription-queue; {create:always, > >> >> >>> >> >>>> node:{x-declare:{auto-delete:True}, > >> >> >>> >> >>>> x-bindings:[{queue:my-subscription-queue, > >> >> >>> >> exchange:my-headers-exchange, > >> >> >>> >> >>>> arguments:{'x-match':all,a:b,c:d}}]}} > >> >> >>> >> >>>> > >> >> >>> >> >>>> However that requires that my-subscription-queue be a > unique > >> >> name > >> >> >>> - > >> >> >>> >> not > >> >> >>> >> >>>> sure > >> >> >>> >> >>>> how well that will work for a JNDI based destination. > >> >> >>> >> >>>> > >> >> >>> >> >>> > >> >> >>> >> >>> I verified that the above addressing string can be > specified > >> in > >> >> the > >> >> >>> >> >>> JNDI properties. > >> >> >>> >> >>> > >> >> >>> >> >> > >> >> >>> >> >> The point is not that it can't be specified in JNDI but > that > >> >> >>> multiple > >> >> >>> >> >> consumers created from the destination obtained will all be > >> using > >> >> >>> the > >> >> >>> >> same > >> >> >>> >> >> queue and will thus compete for messages which is not what > you > >> >> want. > >> >> >>> >> >> > >> >> >>> >> >> If there was only going to be one consumer that might not > be > >> an > >> >> >>> issue of > >> >> >>> >> >> course. > >> >> >>> >> >> > >> >> >>> >> >> > >> >> >>> >> >> > >> >> >>> > >> --------------------------------------------------------------------- > >> >> >>> >> >> 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] > >> >> >>> >> > >> >> >>> >> > >> >> >>> > > >> >> >>> > >> >> >>> > >> --------------------------------------------------------------------- > >> >> >>> 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] > >> >> > >> >> > >> > > >> > >> --------------------------------------------------------------------- > >> 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] > >
