The NMS API (.Net Message Service API) providers a standard C# interface to Messaging Systems. There could be multiple implementations to different providers (including MSMQ).

NMS API currently supports all of the features of JMS in a simple pure C# API and implementation apart from XA. Current features include

  • creating & disposing of connections, sessions, producers, consumers
  • sending of messages to topics, queues with durable or non durable along with temporary destination support
  • synchronous consuming (blocking receive, receive with no wait or receive with a timeout)
  • asynchronous consuming (adding a MessageListener to be dispatched in the thread pool)
  • JMS message header support along with custom properties
  • Text, Bytes and Map message support
  • support for JMS transactions (sending and acknowledging multiple messages in an atomic transaction)
  • redelivery of messages in rollbacks up to some configured maximum redelivery count

A provider implementation based on a pure C# implementation of OpenWire is provided for working with the Apache ActiveMQ broker.  There are other provider implementations for working with TIBCO, Microsoft Message Queue (MSMQ), and Windows Communication Foundation (WCF).

You can browse the source code and tests

Using the right ActiveMQ version

We recommend you use the ActiveMQ 4.1.1 Release or later.

Building the code

On Windows you can use Visual Studio to build the code. On Linux or OS X you can use Mono.

The build uses NAnt which both work on .Net and Mono.  You will need to have NAnt 0.86-Beta2 or later.

For more help see the Building NMS guide.

Alternatives to NMS

We currently have a few alternatives to using NMS and working with ActiveMQ on .Net.

Graphic Design By Hiram