+1, can some one do a PoC on RabitMQ with the JMS transport? and if it is successful then submit that as a sample on to synapse, if we fail to do that, what ever the theory is, we will have to go for a native AMQP or some transport which can work with AMQP providers like RabitMQ.
Lahiru, whould you like to do this? Or may be Rajith :-) Thanks, Ruwan On Fri, Nov 27, 2009 at 9:41 AM, Hiranya Jayathilaka <hiranya...@gmail.com>wrote: > > > On Thu, Nov 26, 2009 at 8:42 PM, Rajith Attapattu <rajit...@gmail.com>wrote: > >> On Wed, Nov 25, 2009 at 11:22 PM, Hiranya Jayathilaka >> <hiranya...@gmail.com> wrote: >> > Well personally I like the idea of Synapse having a native AMQP >> > implementation rather than having to access AMQP queues over JMS. Some >> of >> > the prominent AMQP providers like RabbitMQ does not provide JMS and JNDI >> > support at a satisfactory level. IMHO it is totally worth having this >> > transport - as an optional one of course. >> >> Good question and one for the FAQ. >> AMQP servers does not need to be aware of JMS or support JNDI. >> The Qpid client (or for that matter any JMS client built on top of >> AMQP) will map JMS semantics on to AMQP, and the protocol takes care >> of the rest. >> The AMQP WG does understand the prominence of JMS very well, hence >> have taken that into account when designing the protocol. >> >> You could use Qpid JNDI to represent pre created AMQP queues (using a >> management tool), or you could dynamically create these queues based >> on the destination configuration. >> The new address syntax for all language clients that Qpid is currently >> working on has a lot more flexibility than the older format. >> For example It could do things, like specify declare arguments (to >> make use of provide specific features like >> max-queue-size,max-queue-count, reject-policy ..etc) >> Another example is setting destination specific flow control, or >> reliability expectations. >> Another important point to note is that, this configuration is done >> with AMQP 1.0 in mind. So you could just upgrade to an AMQP 1.0 server >> __without any code changes__ >> >> Another benefit of the JMS transport is that you could use it to talk >> to RabbitMQ or Qpid brokers. >> > > Can we use the JMS transport to talk with brokers like RabbitMQ which are > not written in Java? Do you mean to say that we can already use the Axis2 > JMS transport to connect with JMS unaware AMQP brokers? If that can be done > then I'm ready to give up the idea of writing a native AMQP transport. > However we need to properly document such tasks by providing sufficient > samples. > > Thanks, > Hiranya > > >> If we use a native AMQP transport it will likely be very close to a >> particular protocol version and the sensible option is to use 0-10 or >> go straight to 1.0 >> It should be noted there are significant semantic differences between >> 0-8/0-9, 0-10 and 1.0 versions of the protocol. >> So it will not work with RabbitMQ. If you use 1.0 currently no >> production versions exist as the protocol is yet to be ratified. >> If that is taken into account you will end up writing a higher level >> client that is protocol agnostic, which would quite bit of work for no >> real benefit. >> So why not use the JMS transport? >> >> The RabbitMQ sever is at 0-8 (0-9 too ??) version of the protocol, >> while the Qpid java broker supports 0-8,0-9,0-10 and the c++ broker >> only the 0-10 version. >> However the Qpid JMS client supports all (0-8,0-9 and 0-10) versions >> of the protocol. >> So you should be able to use the JMS transport with RabbitMQ or Qpid. >> (The Qpid client and RabbitMQ does have a few quirks, and that is more >> due to issues with the 0-8 protocol and to the fact that some features >> are not supported by one vendor) >> >> So in summary I still don't see any tangible benefit of having a >> native AMQP transport, unless we have some very compelling use cases. >> Infact I think for a project like Synapse using AMQP via JMS seems >> like a safe bet. >> But if someone is willing to experiment, I wouldn't stand in the way >> either :) >> >> > Thanks, >> > Hiranya >> > >> > On Wed, Nov 25, 2009 at 11:14 PM, Rajith Attapattu <rajit...@gmail.com> >> > wrote: >> >> >> >> Hi Lahiru, >> >> >> >> I am afraid it's in an unusable state atm mainly due to my fault. >> >> I would also like to take this opportunity to discuss the continuity >> >> of the amqp transport. >> >> >> >> The motivation behind creating an AMQP specific transport instead of >> >> using it via the JMS transport was due to the perceived flexibility & >> >> performance achieved via a transport that is close to the protocol. >> >> >> >> However as Qpid gained more experience and myself having the privilege >> >> of working with customers and end users realized that the JMS >> >> implementation is lacking this flexibility more due to design issues >> >> than any real issue with the API itself. Over the last year or so we >> >> made significant improvements to the JMS client. >> >> The new address format that will be used by all the Qpid clients >> >> including JMS will be rich enough to tune protocol specifics via the >> >> javax.jms.Destination abstraction while allowing applications to use >> >> pure JMS without having to resort to a vendor specific low level API. >> >> Going forward management aspects such as having to create >> >> queues/exchanges dynamically could be done by sending a map message >> >> than invoking a protocol command. Infact in AMQP 1.0 management/admin >> >> work such as declaring queues are not protocol specific commands any >> >> more. They are achieved via sending messages to a known admin/mgt >> >> service within a container. >> >> >> >> There was also quite a bit of performance work done in the JMS client >> >> to the extent the difference btw the JMS layer and lower layer is >> >> negligible for a real business application especially within the >> >> context of Synapse. In artificial benchmarks the diff is about 10k >> >> msg/sec. >> >> >> >> Therefore with the benefit of hindsight I feel that having an AMQP >> >> specific transport doesn't add anything significant over the well >> >> tested JMS transport that Synapse has. >> >> However before coming to a conclusion, it would be worthwhile to >> >> figure out all the use cases around AMQP with Synapse. >> >> Then we could document how they could be achieved via the JMS >> transport. >> >> If there are any use cases that cannot be reasonably met, then perhaps >> >> we could discuss about an AMQP specific transport. >> >> >> >> Regards, >> >> >> >> Rajith >> >> >> >> On Wed, Nov 25, 2009 at 9:22 AM, Lahiru Gunathilake <glah...@gmail.com >> > >> >> wrote: >> >> > Hi all, >> >> > >> >> > I like to do some work with synapse AMQP trasport and like to know >> the >> >> > status of the trasport in current synapse code base. >> >> > >> >> > Regards >> >> > Lahiru >> >> > >> >> > -- >> >> > Apache Qpid, Worlds dominant messaging middleware..!!! >> >> > >> >> >> >> >> >> >> >> -- >> >> Regards, >> >> >> >> Rajith Attapattu >> >> Red Hat >> >> http://rajith.2rlabs.com/ >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: dev-unsubscr...@synapse.apache.org >> >> For additional commands, e-mail: dev-h...@synapse.apache.org >> >> >> > >> > >> > >> > -- >> > Hiranya Jayathilaka >> > Software Engineer; >> > WSO2 Inc.; http://wso2.org >> > E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 >> > Blog: http://techfeast-hiranya.blogspot.com >> > >> >> >> >> -- >> Regards, >> >> Rajith Attapattu >> Red Hat >> http://rajith.2rlabs.com/ >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@synapse.apache.org >> For additional commands, e-mail: dev-h...@synapse.apache.org >> >> > > > -- > Hiranya Jayathilaka > Software Engineer; > WSO2 Inc.; http://wso2.org > E-mail: hira...@wso2.com; Mobile: +94 77 633 3491 > Blog: http://techfeast-hiranya.blogspot.com > -- Ruwan Linton Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb WSO2 Inc.; http://wso2.org email: ru...@wso2.com; cell: +94 77 341 3097 blog: http://ruwansblog.blogspot.com