All Projects → apache → activemq-nms-amqp

apache / activemq-nms-amqp

Licence: Apache-2.0 License
Mirror of Apache ActiveMQ NMS.AMQP Client

Programming Languages

C#
18002 projects
powershell
5483 projects

Projects that are alternatives of or similar to activemq-nms-amqp

activemq-nms-api
Mirror of Apache ActiveMQ NMS API
Stars: ✭ 30 (-18.92%)
Mutual labels:  activemq, network-server, network-client
Activemq
Mirror of Apache ActiveMQ
Stars: ✭ 1,970 (+5224.32%)
Mutual labels:  activemq, network-server, network-client
activemq-website
Apache ActiveMQ Website
Stars: ✭ 16 (-56.76%)
Mutual labels:  activemq, network-server, network-client
guacamole-manual
Mirror of Apache Guacamole Manual
Stars: ✭ 23 (-37.84%)
Mutual labels:  network-server, network-client
Ignite
Apache Ignite
Stars: ✭ 4,027 (+10783.78%)
Mutual labels:  network-server, network-client
Couchdb
Seamless multi-master syncing database with an intuitive HTTP/JSON API, designed for reliability
Stars: ✭ 5,166 (+13862.16%)
Mutual labels:  network-server, network-client
Thrift
Apache Thrift
Stars: ✭ 8,821 (+23740.54%)
Mutual labels:  network-server, network-client
Guacamole Server
Mirror of Apache Guacamole Server
Stars: ✭ 1,931 (+5118.92%)
Mutual labels:  network-server, network-client
couchdb-pkg
Apache CouchDB Packaging support files
Stars: ✭ 24 (-35.14%)
Mutual labels:  network-server, network-client
couchdb-couch-plugins
Mirror of Apache CouchDB
Stars: ✭ 14 (-62.16%)
Mutual labels:  network-server, network-client
synapse
Apache Synapse is a lightweight and high-performance Enterprise Service Bus (ESB)
Stars: ✭ 43 (+16.22%)
Mutual labels:  network-server, network-client
qpid-cpp
Mirror of Apache Qpid C++
Stars: ✭ 77 (+108.11%)
Mutual labels:  network-server, network-client
couchdb-mango
Mirror of Apache CouchDB Mango
Stars: ✭ 34 (-8.11%)
Mutual labels:  network-server, network-client
pilotclient
Cross-platform cross-simulator pilot client for virtual air traffic networks
Stars: ✭ 57 (+54.05%)
Mutual labels:  network-client
geronimo-config
Apache Geronimo Config
Stars: ✭ 15 (-59.46%)
Mutual labels:  network-server
vacomall
☀️☀️ 基于 dubbo 实现的分布式电商平台。
Stars: ✭ 42 (+13.51%)
Mutual labels:  activemq
distmq
Distributed Message Queue based on Raft
Stars: ✭ 32 (-13.51%)
Mutual labels:  activemq
james-hupa
Apache James hupa
Stars: ✭ 20 (-45.95%)
Mutual labels:  network-server
airavata-php-gateway
Mirror of Apache Airavata PHP Gateway
Stars: ✭ 15 (-59.46%)
Mutual labels:  network-server
activemq-cli
Command Line tool to interact with the Apache ActiveMQ message broker
Stars: ✭ 90 (+143.24%)
Mutual labels:  activemq

Apache-NMS-AMQP

Build Status

OS Status
Linux Build Status
Windows Build status

Installing Apache NMS AMQP

You can install Apache NMS AMQP with NuGet:

Install-Package Apache.NMS.AMQP

Or via the .NET Core command line interface:

dotnet add package Apache.NMS.AMQP

Either commands, from Package Manager Console or .NET Core CLI, will download and install Apache NMS AMQP and all required dependencies.

Overview

The goal of this project is to combine the .NET Message Service API (NMS) with the Advanced Message Queuing Protocol (AMQP) 1.0 standard wireline protocol. Historically, the Apache community created the NMS API which provided a vendor agnostic .NET interface to a variety of messaging systems. The NMS API gives the flexibility to write .NET applications in C#, VB or any other .NET language, all while using a single API to connect to any number of messaging providers. The Advanced Message Queuing Protocol (AMQP) is an open and standardized internet protocol for reliably passing messages between applications or organizations. Before AMQP became a standard, organizations used proprietary wireline protocols to connect their systems which lead to vendor lock-in and integration problems when integrating with external organizations.

The key to enabling vendor independence and mass adoption of technology is to combine open source APIs and standard wireline protocols which is precisely what this project is all about. Here's how AMQP 1.0 support within NMS helps the .NET community:

  • More Choice: As more message brokers and services implement the AMQP 1.0 standard wireline, .NET developers and architects will have more options for messaging technology.
  • No Migration Risk: Since AMQP 1.0 is a wireline standard, you won't run into the problems that used to happen when switching between implementations.
  • Innovation: Competition is a key component of technology innovation. Directly competitive messaging implementations, with seamless pluggability, forces vendors to innovate and differentiate.

If you are a .NET developer that doesn't want to be locked into a messaging implementation then get engaged with this project. Here you will find the open source code base and please provide comments and make your own enhancements. The project will be folded into the Apache community once fully mature.

AMQP1.0 Protocol Engine AmqpNetLite

Apache-NMS-AMQP uses AmqpNetLite as the underlying AMQP 1.0 transport Protocol engine.

Overall Architecture

Apache-NMS-AMQP should bridge the familiar NMS concepts to AMQP protocol concepts as described in the document amqp-bindmap-jms-v1.0-wd09.pdf. So in general most of the top level classes that implement the Apache.NMS interface Connection, Session, MessageProducer, etc create, manage, and destroy the amqpnetlite equivalent object Connection, Session, Link, etc.

Getting started

  • Configuration contains various uri options that can be set when defining a ConnectionFactory.
  • Interested in the code? Clone and build the projects.
  • Want to contribute? Github pull requests are one way to contribute, but our real issue tracker is JIRA.

Amqp Provider NMS Feature Support

Feature Supported Comments
TLS/SSL Y Configuration is supported using transport properties.
Client Certificate Authentication Y Configuration is supported using transport properties.
Transactions (AcknowledgementMode.Transactional) Y
Distributed Transactions (INetTxConnectionFactory, INetTxConnection, INetTxSession) N
AcknowledgementMode.AutoAcknowledge Y
AcknowledgementMode.DupsOkAcknowledge Y
AcknowledgementMode.ClientAcknowledge Y
AcknowledgementMode.IndividualAcknowledge Y
IObjectMessage Y * Amqp value object bodies and dotnet serializable object bodies are supported.
IBytesMessage Y
IStreamMessage Y
IMapMessage Y
ITextMessage Y
IMessage Y
IConnectionFactory Y
IConnection Y The ConnectionInterruptedListener event and the ConnectionResumedListener are not supported.
ProducerTransformerDelegate N Any member access should throw a NotSupportedException.
ConsumerTransformerDelegate N Any member access should throw a NotSupportedException.
ISession Y
[ INMSContext Y
IQueue Y
ITopic Y
ITemporaryQueue Y
ITemporaryTopic Y
IMessageProducer Y * Anonymous producers are only supported on connections with the ANONYMOUS-RELAY capability.
INMSProducer Y
MsgDeliveryMode.Persistent Y Producers will block on send until an outcome is received or will timeout after waiting the RequestTimeout timespan amount. Exceptions may be throw depending on the outcome or if the producer times out.
MsgDeliveryMode.NonPersistent Y Producers will not block on send nor expect to receive an outcome. Should an exception be raised from the outcome the exception will be delivered using the the connection ExceptionListener.
IMessageConsumer Y
INMSConsumer Y
Durable Consumers Y
Shared Consumers Y
IQueueBrowser Y
Configurable NMSMessageID and amqp serializtion N For future consideration. The prodiver will generate a MessageID from a sequence and serialize it as a string.
Flow control configuration Y You can configure link credit. Default value is 1000. See prefetchPolicy in Configuration.
Object Deserialization Policy N For future consideration. The provider considers all Dotnet serialized objects in Object Message bodies are safe to deserialize.
Failover Y

Licensing

This software is licensed under the terms you may find in the file named "LICENSE" in this directory.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].