blob: 7ca89bafb904e5e4a384b25626636689cc09cdc0 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>ActiveMQ</title>
<link rel="icon" type="image/png" href="/assets/img/favicon.png">
<link rel="stylesheet" href="/css/main.css">
<script defer src="https://use.fontawesome.com/releases/v5.0.8/js/all.js" integrity="sha384-SlE991lGASHoBfWbelyBPLsUlwY1GwNDJo3jSJO04KZ33K2bwfV9YBauFfnzvynJ" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light fixed-top">
<div class="container">
<!-- <a class="navbar-brand mr-auto" href="#"><img style="height: 50px" src="assets/img/apache-feather.png" /></a> -->
<a class="navbar-brand mr-auto" href="/"><img src="/assets/img/activemq_logo_black_small.png" style="height: 50px"/></a>
<button class="navbar-toggler ml-auto" type="button" data-toggle="collapse" data-target="#navbarContent" aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="ml-auto collapse navbar-collapse" id="navbarContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link active" href="/index.html">Home</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link" id="navbarDropdownComponents" data-target="#" href="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Components</a>
<ul class="dropdown-menu dropdown-menu-center" aria-labelledby="navbarDropdownComponents">
<div class="row">
<div class="col-12">
<ul class="multi-column-dropdown">
<li class="nav-item"><a class="dropdown-item" href="/components/classic">ActiveMQ 5</a></li>
<li class="nav-item"><a class="dropdown-item" href="/components/artemis/">ActiveMQ Artemis</a></li>
<li class="nav-item"><a class="dropdown-item" href="/components/nms">NMS Clients</a></li>
<li class="nav-item"><a class="dropdown-item" href="/components/cms">CMS Client</a></li>
</ul>
</div>
</div>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link" id="navbarDropdownCommunity" data-target="#" href="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Contact</a>
<ul class="dropdown-menu dropdown-menu-center multi-column columns-1" aria-labelledby="navbarDropdownCommunity">
<div class="row">
<div class="col-12">
<ul class="multi-column-dropdown">
<li class="nav-item"><a class="dropdown-item" href="/contact#mailing">Mailing Lists</a></li>
<li class="nav-item"><a class="dropdown-item" href="/contact#chat">Chat</a></li>
<li class="nav-item"><a class="dropdown-item" href="/contact#issues">Report Issues</a></li>
<li class="nav-item"><a class="dropdown-item" href="/contact#contributing">Contributing</a></li>
<li class="nav-item"><a class="dropdown-item" href="/security-advisories.html">Security</a></li>
</ul>
</div>
</div>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link" id="navbarDropdownTeam" data-target="#" href="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Apache</a>
<ul class="dropdown-menu dropdown-menu-center multi-column columns-1" aria-labelledby="navbarDropdownTeam">
<div class="row">
<div class="col-sm-12">
<ul class="multi-column-dropdown">
<li class="nav-item"><a class="dropdown-item" href="https://www.apache.org">The Apache Software Foundation</a></li>
<li class="nav-item"><a class="dropdown-item" href="https://www.apache.org/licenses/">License</a></li>
<li class="nav-item"><a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li class="nav-item"><a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li class="nav-item"><a class="dropdown-item" href="/security-advisories.html">Security</a></li>
<li class="nav-item"><a class="dropdown-item" href="https://www.apache.org/events/current-event">Events</a></li>
<li class="nav-item"><a class="dropdown-item" href="https://people.apache.org/phonebook.html?pmc=activemq">PMC & Committers</a></li>
<li class="nav-item"><a class="dropdown-item" href="/team/reports">Board Reports</a></li>
</ul>
</div>
</div>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<div class="content">
<div class="page-title-nms">
<div class="container">
<h1>NMS Documentation</h1>
</div>
</div>
<div class="container" >
<div class="row" style="margin-top: 30px">
<div class="col-12 nms">
<h3 id="api-overview">API Overview</h3>
<p>The <a href="nms-api">NMS API</a> (<em>.Net Message Service API</em>) provides a standard .NET interface to Messaging Systems. There are multiple implementations for different <a href="#providers">providers</a> (including MSMQ). The NMS API allows you to build .NET applications in C#, VB, or any other .NET language, using a single API to connect to multiple different providers using a JMS style API.</p>
<p>NMS API currently supports all of the features of JMS in a simple pure C# API and implementation apart from XA. Current features include:</p>
<ul>
<li>creating &amp; disposing of connections, sessions, producers, consumers</li>
<li>sending of messages to topics, queues with durable or non durable along with temporary destination support</li>
<li>synchronous consuming (blocking receive, receive with no wait or receive with a timeout)</li>
<li>asynchronous consuming (adding a MessageListener to be dispatched in the thread pool)</li>
<li>message header support along with custom properties</li>
<li>Text, Bytes, Stream and Map message support</li>
<li>support for transactions (sending and acknowledging multiple messages in an atomic transaction)</li>
<li>redelivery of messages in rollbacks up to some configured maximum redelivery count</li>
<li>Optional Queue browser interface for providers that can support it.</li>
<li>Optional .NET Distributed Transaction Support for providers that can support that.</li>
</ul>
<p>A provider implementation based on a pure C# implementation of OpenWire is provided for working with the Apache ActiveMQ broker. There are other <a href="#providers">provider implementations</a> for working with Stomp, TIBCO EMS, Microsoft Message Queue (MSMQ), AMQP, and Windows Communication Foundation (WCF).</p>
<p>If you are curious you can browse the <a href="https://svn.apache.org/repos/asf/activemq/activemq-dotnet/">source code and tests</a> for the entire project or download an <a href="#providers">NMS Provider</a>.</p>
<ul>
<li><a href="nms-api">API</a></li>
<li><a href="nms-api-downloads">API Downloads</a></li>
<li><a href="#providers">Providers</a></li>
<li><a href="#examples">Examples</a></li>
<li><a href="nms-uri-configuration">URI Configuration</a></li>
</ul>
<hr />
<h3 id="providers-">Providers <a name="providers"></a></h3>
<p>An NMS Provider is a .NET Assembly that provides an implementation of the NMS API that provides connectivity with a particular Messaging Service or an implementation of a standard Messaging Protocol. Currently, the following providers are available:</p>
<ul>
<li><a href="providers/amqp">AMQP</a> provides support for AMQP 1.0 protocol. Compatible with ActiveMQ 5.x, ActiveMQ Artemis and any other AMQP 1.0 compliant broker.</li>
<li><a href="providers/activemq">ActiveMQ (OpenWire)</a> client which communicates with ActiveMQ 5.x using its own native wire protocol and provides many <a href="providers/activemq/advanced-features">advanced features</a> beyond the standard NMS API.</li>
<li><a href="providers/stomp">STOMP</a> which connects to any <a href="https://stomp.github.io/implementations.html">STOMP Broker</a>. Also, when coupled with StompConnect, NMS can be used to communicate with pretty much any existing MOM provider! (Or at least those that support JMS which most MOM providers do).</li>
<li><a href="providers/msmq">MSMQ</a> is an implementation of NMS using Microsoft’s MSMQ API.</li>
<li><a href="providers/ems">EMS</a> provider for talking to TIBCO’s EMS message broker. To use this, you will need to following TIBCO’s licensing requirements to acquire the TIBCO client assembly DLL. NMS does not ship with the TIBCO client assembly.</li>
<li><a href="providers/wcf">WCF</a> provides support of Windows Communications Framework.</li>
</ul>
<hr />
<h3 id="building-the-code">Building the code</h3>
<p>While there are binary distributions available for all the NMS Providers you sometimes might want to build the code from trunk in order to test out the latest changes or fixes. On Windows you can use Visual Studio to build the code. On Linux or OS X you can use <a href="http://www.mono-project.com">Mono</a>.</p>
<p>The build uses <a href="http://nant.sourceforge.net/">NAnt</a> which both work on .Net and Mono. You will need to have NAnt 0.91-Alpha2 or later.</p>
<p>For more help see the <a href="building">Building NMS</a> guide.</p>
<hr />
<h3 id="alternatives-to-nms">Alternatives to NMS</h3>
<p>There are currently a few alternatives to using NMS and working with ActiveMQ in .NET applications however the <a href="providers/activemq">NMS ActiveMQ Provider</a> is very feature rich and we recommend it as your starting point for .NET ActiveMQ inter-op.</p>
<ul>
<li>use the <a href="http://stomp.codehaus.org/DotNet">pure C# Stomp client</a> to access ActiveMQ from .Net using a lightweight client.</li>
<li>use the ActiveMQ Java client from C# and .Net using IKVM. <a href="http://dotnetjunkies.com/WebLog/csteen/archive/2004/08/20/22813.aspx">More information</a>.</li>
<li>use the <a href="http://activemq.apache.orgConnectivity/ProtocolsConnectivity/Protocols/Connectivity/Protocols/rest.md">ActiveMQ REST</a> API via HTTP</li>
<li>use the <a href="http://activemq.apache.orgConnectivity/Cross Language ClientsConnectivity/Cross Language Clients/Connectivity/Cross Language Clients/c-integration.md">ActiveMQ C Integration</a> to reuse the C/C++ library.</li>
</ul>
<hr />
<h3 id="examples-">Examples <a name="examples"></a></h3>
<p>This is where you will find examples of how to use the NMS API. These examples demonstrate using the NMS API generically and are limited to features exposed directly through the API model. For examples covering more advanced features of a specific NMS Provider, refer to the documentation for that NMS Provider.</p>
<ul>
<li><a href="examples/nms-simple-asynchronous-consumer-example">NMS Simple Asynchronous Consumer Example</a></li>
<li><a href="examples/nms-simple-synchronous-consumer-example">NMS Simple Synchronous Consumer Example</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="row sitemap">
<div class="col-sm-12">
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="row">
<div class="col-sm-3">
<div >
<img class="float-left" style="max-height: 100px" src="/assets/img/activemq_logo_white_vertical_small.png"/>
</div>
</div>
<div style="text-align: center; margin-bottom: 0px; margin-top: 30px; font-size: 65%" class="col-sm-6">
<p>Apache ActiveMQ, ActiveMQ, ActiveMQ Artemis, Apache, the Apache feather logo, and the Apache ActiveMQ project logo are trademarks of The Apache Software Foundation. Copyright &copy; 2019, The Apache Software Foundation. Licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.</p>
</div>
<div class="col-sm-3">
<div >
<a href="https://www.apache.org"><img class="float-right" style="margin-top: 10px; max-height: 80px" src="/assets/img/apache-logo-small.png"/></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>