You can do one of the following, session.createQueue(<address-string>); session.createTopic(<address-string>);
The above methods are from the JMS Session interface. Regards, Rajith On Fri, May 27, 2011 at 2:54 PM, Siamak Kolahi <[email protected]> wrote: > 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] >> >> > --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
