You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by Timothy Bish <ta...@gmail.com> on 2017/03/13 16:01:29 UTC

Re: [DISCUSS] Rework NMS.AMQP

Just to close the loop here, the AMQP NMS client repo is now migrated to 
Git and mirrored on Github here:
https://github.com/apache/activemq-nms-amqp

We should probably create a branch of the old client work before pushing 
any rework PRs in, I'll take care of that a bit later today.

On 02/14/2017 02:32 PM, Duane Pauls 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
>


-- 
Tim Bish
twitter: @tabish121
blog: http://timbish.blogspot.com/