On Tue, Feb 14, 2017 at 5:03 PM Jim Gomes <[email protected]> wrote: > Hi Duane, > > Thank you very much for this proposal. I think it sounds great. The > current NMS.AMQP is just a wrapper around another library. If we could > have a full native implementation of the NMS API using AMQP, that would be > much better. > > As you point out, the licensing seems to be compatible, but maybe a quick > review from Apache legal might be a good idea since the intent is to > re-integrate it into the NMS codebase as an official project. > > The NMS code is in Subversion, and not in Git. Here is the repository URL: > > https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.AMQP/trunk > . > It does not need to be ported to Git in order to create a new AMQP provider > implementation. >
It would make it easier to contribute thought. PRs is a perfect way to start with contributions. > Please let me know how I can help with this effort. > > Best, > Jim > > > On Tue, Feb 14, 2017 at 12:53 PM Clebert Suconic < > [email protected]> > wrote: > > > wow.. IMHO it sounds an awesome idea... > > > > > > you could also include ActiveMQ Artemis to the list of brokers. > > > > > > I have been doing some work around AMQP on Artemis, and I also wrote a > > blog on how to use the AMQP lite: > > > https://blogs.apache.org/activemq/entry/using-net-libraries-with-activemq > > > > > > Using the NMS seems like a great Idea, as it would represent an > > independent layer, like JMS is now, and it could make migration from > > OpenWire .NET clients into AMQP an easy transition? > > > > > > Do you have an idea on how much effort it would take... do you have > > any ideas for the initial implementation already? > > > > > > > > I"m not sure where is the current repo for NMS. Maybe still in SVN? I > > couldn't find a git repo for it yet. If that's the case the first step > > would be to translate it into a git repo. We could start with pull > > requests. > > > > On Tue, Feb 14, 2017 at 2:32 PM, Duane Pauls <[email protected]> > > wrote: > > > Hello, > > > > > > I'm relatively new to the ActiveMQ community, but I've been watching > this > > > list for the last little while and would like to propose some rework to > > the > > > NMS.AMQP API. > > > > > > I'm interested in any feedback you folks may have. Thanks in advance! > > > > > > > > > > > > NMS.AMQP REWORK PROPOSAL > > > > > > > > > Abstract > > > > > > A pure .NET implementation of NMS[1] using the AMQP .NET Lite API[2]. > > > > > > > > > Proposal > > > > > > This proposal is to rework the ActiveMQ NMS.AMQP codebase in order to > > > achieve: > > > 1. A pure .NET implementation of the NMS API using the AMQP 1.0[3] > > > wireline protocol as a transport. To do this, the AMQP .NET Lite API > > > will be used. > > > 2. Interoperability with other APIs following the AMQP JMS Mapping > > > Specification[4], namely Qpid JMS[5]. > > > 3. Interoperability via AMQP 1.0 brokers such as ActiveMQ[6], the Qpid > > > C++ broker[7], and the Qpid broker for Java[8]. > > > > > > While we would be open to alternate approaches, we propose starting > work > > > on a development branch within the ActiveMQ NMS.AMQP repository[9], > then > > > replace the contents of the trunk with the branch when the branch has > > > reached an appropriate level of maturity. > > > > > > There are two major components changing: > > > 1. The underlying transport API providing AMQP capabilities. > > > 2. The mapping between the NMS API and the underlying AMQP API. > > > > > > Therefore, there is little of the existing implementation that could be > > > reused. Hence the proposal is replace the implementation rather than > > > refactor it. > > > > > > > > > Background > > > > > > AMQP 1.0[3] is a standard wireline protocol. There are already open > > > source APIs that expose native AMQP 1.0 concepts directly: > > > 1. Apache Qpid Proton[10], which is available for a number of different > > > languages. > > > 2. AMQP .Net Lite[2], which is a pure .NET API implementation. AMQP > .Net > > > Lite is not an Apache project, but it is licensed under the Apache 2.0 > > > license. > > > > > > There are also open source APIs that implement other messaging APIs, > and > > > map the APIs concepts to the AMQP 1.0 protocol. Examples of such APIs > > > are: > > > 1. Apache Qpid JMS[5], a JMS implementation that follows the AMQP JMS > > > Mapping Specification[4]. > > > 2. The existing Apache ActiveMQ NMS.AMQP[9], an NMS implementation > using > > > .NET-wrapped native code, and using a different API to protocol mapping > > > than Qpid JMS. > > > > > > > > > Rationale > > > > > > AMQP 1.0[3] is an attractive technology choice for deploying middleware > > > solutions. As a standardized protocol, it offers operational > flexibility > > > for middleware solutions. For example, if it is desired change the AMQP > > > 1.0 provider, this is much more readily achieved with minimal impact to > > > applications compared to changing a provider when applications use a > > > vendor-specific API and/or protocol. > > > > > > Many software architects and developers are familiar with topic and > > > queue based messaging. The prevalence of Message Oriented Middleware > > > offerings such as IBM MQ, Amazon Simple Queue Service, and JMS > > > demonstrate this. In addition, .NET is a very popular software > > > framework. However, AMQP 1.0 is a relative newcomer to the middleware > > > marketspace. A vibrant ecosystem of open source APIs is seen as a vital > > > component to the future success of the technology. > > > > > > Therefore, an NMS API using AMQP 1.0 is an important piece of the AMQP > > > 1.0 ecosystem. Implementing pure .NET libraries will make it easier to > > > deploy solutions. By using a standardized API to protocol mapping, > > > greater interoperability will be achieved. Overall, this project seeks > > > to make AMQP 1.0 more accessible to architects and developers. This API > > > complements rather than competes with APIs such as Qpid Proton and AMQP > > > .NET Lite, both excellent options for those wishing to embrace AMQP 1.0 > > > messaging paradigm directly. > > > > > > > > > External Dependencies > > > > > > There are two external dependencies for this project: > > > 1. NMS[1], an Apache project. > > > 2. AMQP .NET Lite[2], an open source project licensed under the Apache > > > 2.0 license. > > > > > > Since both dependencies use an Apache license, there are no issues with > > > respect to the licensing of the project's dependencies. > > > > > > > > > References > > > > > > [1] Apache ActiveMQ NMS API: http://activemq.apache.org/nms/ > > > [2] AMQP .NET Lite API: https://github.com/Azure/amqpnetlite/ > > > [3] AMQP Version 1.0: > > > > http://docs.oasis-open.org/amqp/core/v1.0/amqp-core-complete-v1.0.pdf > > > [4] AMQP JMS Mapping Version 1.0: > > > https://www.oasis-open.org/committees/download.php/56418/ > > > [5] Apache Qpid JMS: https://qpid.apache.org/components/jms/ > > > [6] Apache ActiveMQ: http://activemq.apache.org/ > > > [7] Apache Qpid C++ Broker: > > > http://qpid.apache.org/components/cpp-broker/index.html > > > [8] Apache Qpid Broker for Java: > > > http://qpid.apache.org/components/java-broker/index.html > > > [9] Existing Apache NMS.AMQP Repository: > > > > http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.AMQP/ > > > [10] Apache Qpid Proton: http://qpid.apache.org/proton/ > > > > > > > > > > > > Cheers, > > > Duane > > > > > > > > -- > > Clebert Suconic > > > -- Clebert Suconic
