AMQNET-735 Add AsyncMessageListener to Consumer API
diff --git a/src/nms-api/IMessageConsumer.cs b/src/nms-api/IMessageConsumer.cs
index 95a3780..c2db8d9 100644
--- a/src/nms-api/IMessageConsumer.cs
+++ b/src/nms-api/IMessageConsumer.cs
@@ -15,14 +15,20 @@
  * limitations under the License.
  */
 
+using System.Threading;
 using System.Threading.Tasks;
 
 namespace Apache.NMS
 {
     /// <summary>
-    /// A delegate that can receive messages async.
+    /// A delegate that can receive messages.
     /// </summary>
     public delegate void MessageListener(IMessage message);
+    
+    /// <summary>
+    /// A delegate that can receive messages asynchronously.
+    /// </summary>
+    public delegate Task AsyncMessageListener(IMessage message, CancellationToken cancellationToken);
 
     /// <summary>
     /// A delegate that a client can register that will be called each time a consumer dispatches a message
@@ -69,11 +75,16 @@
         IMessage ReceiveNoWait();
 
         /// <summary>
-        /// An asynchronous listener which can be used to consume messages asynchronously
+        /// An listener which can be used to consume messages
         /// </summary>
         event MessageListener Listener;
 
         /// <summary>
+        /// An asynchronous listener which can be used to consume messages asynchronously
+        /// </summary>
+        event AsyncMessageListener AsyncListener;
+
+        /// <summary>
         /// Closes the message consumer.
         /// </summary>
         /// <remarks>
diff --git a/src/nms-api/INMSConsumer.cs b/src/nms-api/INMSConsumer.cs
index 89f3ed6..1b3f800 100644
--- a/src/nms-api/INMSConsumer.cs
+++ b/src/nms-api/INMSConsumer.cs
@@ -68,9 +68,14 @@
         string MessageSelector { get; }
 
         /// <summary>
-        /// An asynchronous listener which can be used to consume messages asynchronously
+        /// A listener which can be used to consume messages
         /// </summary>
         event MessageListener Listener;
+        
+        /// <summary>
+        /// An asynchronous listener which can be used to consume messages asynchronously
+        /// </summary>
+        event AsyncMessageListener AsyncListener;
 
         /// <summary>
         /// Closes the message consumer.