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] > >
