synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rajith Attapattu" <rajit...@gmail.com>
Subject Re: adding a transport
Date Fri, 09 Mar 2007 19:42:32 GMT
Hi Gerald,

Comments in line.

> > From my understanding QPid fully passes the JMS TCK, so you can use
> > > AMQP out-of-the-box with the existing JMS plug today. So in answer to
> > > your question its trivial to use AMQP.
> >

[RA] We did have a full pass on the JMS TCK.
But, there was rapid changes on the trunk after that and I haven't run the
TCK for a while.
So I can't claim 100% compliance w/o running it again. But I dobut that we
really broke anything serious or else we would have heard from users.
Once the trunk stabalizes a bit I am going to run the TCK again and fix
anything if broken.

> In general, there seems to be a mismatch between AMQP features and the
> > JMS API,


[RA] Gerald, I am in the AMQP spec group and we are currently working on an
AMQP-JMS mapping to standardise the JMS implementation on top of AMQP and to
describe in detail how these to worlds come to gether. This is to ensure
that any JMS impl on top of AMQP can interoperate with each other.

>in particular with the concept of an Exchange missing from
> JMS.
[RA] JMS is just a client API. It doesn't really dictate anything about how
a broker should be implemented.
The concept of exchanges is a broker side artifact. For Qpid we have used
the Direct Exchange to implement point-to-point messaging and Topic Exchange
to implement pub-sub.

>
> > Qpid claims to support "All features required by the Sun JMS 1.1
> > specification". Last time i checked, though, i wasn't able to write a
> > Qpid client without resorting to the Qpid-specific API - but i'll
> > certainly try again and try to hook it up to Synapse/Axis2. Will keep
> > this list posted...


[RA] Gerald we don't have a Qpid (or AMQP) specific java client. Our java
client is actually a JMS implementation on top of AMQP.
JMS was the standard messaging API and we decided to use it rather than have
our own API. Besides there are lots of enterprise apps written on JMS.
So having a JMS client was the best way to convert them transparently on to
AMQP.

However currently we are doing a refactoring on the client side (java) and
we want have a very low level client API and then map the JMS API on top of
it.
We could then use this low level client API to suport native AMQP features
that JMS doesn't provide. For example Rabbit has a non JMS java client.
There seems to be some interest in using AMQP directly without JMS, so a
native AMQP client in java makes more sense now.

>
> > > For example, without any coding you should be able to put an XML
> > > message  onto AMQP and have Synapse read it, and then route it to a
> > > WS-ReliableMessaging endpoint - for example a Microsoft .NET server.
> > >

[RA] If synapse needs to inspect the message headers and route and AMQP
message you could do that with the JMS API itself.
 I think Asanka already did something to route messages based on the JMS
headers. Asanka is that correct ?
 If we use the Qpid JMS client then we can do that.

> > I think the interesting question is whether we can do tighter
> > > integration, and we'd love any input on what that could be.
> >


> for instance: the ability to dynamically declare AMQP exchanges,
> > queues and bindings (which wire an exchange to a queue) from Synapse
> > (possibly based on incoming message properties, etc.), since these
> > dynamic capabilities are a core feature of AMQP that is missing from
> > JMS.


[RA] Certainly these features are missing from the current java client. As
we have directly implemented the JMS API.
Part of my current tasks is to work on a low level java client API to do
these things.
Once we have this client I am happy to work with the synapse team to
integrate this into a syanpse extention if the community thinks it's a
useful feature to have.

> > I'm also interested interested in the wider questions around reliable
> > > messaging protocols, so if you're in a position to share your thoughts
> > > around AMQP I'd love to hear those too.
> >
> > i should consolidate my thoughts first ;-) but it is my impression
> > that AMQP is still in a very early stage of its lifecycle:
> >   - there is no standardised Java binding


[RA] We will not do any language bindings. People can implement it in any
lanaguage in any way they want as long as they adhere to the wire protocol
and functionality described in the spec.
 However we are currently working on an AMQP-JMS mapping to standadise a
guide for implementors to ensure any JMS implementation will interoperate
with another. The idea is to have a JMS client (or even a C or Phython
client if they want to) to be able to read a JMS map message sent by another
JMS client and make sense out of it. Basically we are trying to standarise
the encoding. We are doing this only for java as there is no other common
message API out there for any other language.

>   - even the abstracted API that the spec defines is in flux (e.g. the
> > new message class)


[RA] Slowly but surely we are getting closer to finalize this. We already
have the new message class implemented in a branch in Qpid.

>   - i'm unsure as to the interoperability of different AMQP
> > implementations (which is, after all, one central goal for AMQP)
> >   - it promisses on-the-wire interoperability without compromising
> > performance,


[RA] Interoperability is key for AMQP. We will be introducing a TCK to
ensure that.

though
> >   - it's not firewall-friendly
> >   - the spec is very well written ;-)


>
> >   cheers,
> >   gerald
> >
> > >
> > > Paul
> > >
> > > On 3/9/07, Gerald Loeffler <gerald.loeffler@googlemail.com> wrote:
> > > > Hi asankha,
> > > >
> > > > thanks for your quick response. AMQP transport in Synapse/Axis2 is
> not
> > > > an immediate requirement for us but something that we will want to
> be
> > > > able to do in the not-to-distant future without incurring too much
> > > > effort (based on one of the open-source AMQP implementations i
> > > > mentioned). So it is important to know that you don't consider it a
> > > > difficult task adding it to Axis2. I'll have a look at the relevant
> > > > Axis2 APIs and the code for the JMS transport to get a better
> idea...
> > > >
> > > > As to who is going to do it: that entirely depends on our schedule
> > > > when the concrete need for AMQP arises from our project...
> > > >
> > > >   thanks again,
> > > >   gerald
> > > >
> > > > On 09/03/07, Asankha C. Perera <asankha@wso2.com> wrote:
> > > > > Hi Gerald
> > > > > > Can you please give me a rough idea of what it entails to add
> support
> > > > > > for a new transport to Synapse? I would want to add support
for
> AMQP
> > > > > > (http://www.amqp.org/), which has a JMS-like Java client API
> (see
> > > > > > http://cwiki.apache.org/qpid/, http://www.rabbitmq.com/). Is
> this
> > > > > > trivial or a major task? Since Synapse does not build on JBI,
it
> must
> > > > > > have its own APIs for doing this...
> > > > > Adding a new transport to Synapse is the same as adding a new
> transport
> > > > > for Axis2 - and is not a difficult task. There are certain Axis2
> API's
> > > > > you need to implement, and the existing transports should provide
> > > > > adequate examples and code to help guide the effort.
> > > > >
> > > > > Would you be interested in developing an AMQP transport for
> > > > > Synapse/Axis2 yourself, or looking at how you could get the AMQP
> support
> > > > > built into Synapse through the community? Either way I think
> having an
> > > > > actual user requiring a new transport would help in its
> implementation,
> > > > > scope and testing efforts. I will read through some of the links
> you
> > > > > have provided meanwhile..
> > > > >
> > > > > asankha
> > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: synapse-user-unsubscribe@ws.apache.org
> > > > > For additional commands, e-mail: synapse-user-help@ws.apache.org
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > http://www.gerald-loeffler.net
> > > >
> > > >
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: synapse-user-unsubscribe@ws.apache.org
> > > > For additional commands, e-mail: synapse-user-help@ws.apache.org
> > > >
> > > >
> > >
> > >
> > > --
> > > Paul Fremantle
> > > VP/Technology, WSO2 and OASIS WS-RX TC Co-chair
> > >
> > > http://bloglines.com/blog/paulfremantle
> > > paul@wso2.com
> > >
> > > "Oxygenating the Web Service Platform", www.wso2.com
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: synapse-user-unsubscribe@ws.apache.org
> > > For additional commands, e-mail: synapse-user-help@ws.apache.org
> > >
> > >
> >
> >
> > --
> > http://www.gerald-loeffler.net
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: synapse-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: synapse-user-help@ws.apache.org
> >
> >
>
>
> --
> Paul Fremantle
> VP/Technology, WSO2 and OASIS WS-RX TC Co-chair
>
> http://bloglines.com/blog/paulfremantle
> paul@wso2.com
>
> "Oxygenating the Web Service Platform", www.wso2.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: synapse-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: synapse-user-help@ws.apache.org
>
>

Mime
View raw message