AMQNET-599: Changing Message NMSDeliveryMode property should set Amqp.Message Header durable field

(cherry picked from commit 3ce0c9779093e4c3db467d0e81ef190d42d7c31b)
diff --git a/src/NMS.AMQP/Message/Facade/INmsMessageFacade.cs b/src/NMS.AMQP/Message/Facade/INmsMessageFacade.cs
index 34bffd9..f610a6f 100644
--- a/src/NMS.AMQP/Message/Facade/INmsMessageFacade.cs
+++ b/src/NMS.AMQP/Message/Facade/INmsMessageFacade.cs
@@ -30,7 +30,6 @@
         string NMSCorrelationID { get; set; }
         IDestination NMSDestination { get; set; }
         TimeSpan NMSTimeToLive { get; set; }
-        MsgDeliveryMode NMSDeliveryMode { get; set; }
         MsgPriority NMSPriority { get; set; }
         bool NMSRedelivered { get; set; }
         IDestination NMSReplyTo { get; set; }
@@ -40,6 +39,12 @@
         uint GroupSequence { get; set; }
         DateTime Expiration { get; set; }
         sbyte JmsMsgType { get; }
+        
+        /// <summary>
+        /// True if this message is tagged as being persistent
+        /// </summary>
+        bool IsPersistent { get; set; }
+        
         INmsMessageFacade Copy();
     }
 }
\ No newline at end of file
diff --git a/src/NMS.AMQP/Message/NmsMessage.cs b/src/NMS.AMQP/Message/NmsMessage.cs
index 9f9c1c9..c8cba84 100644
--- a/src/NMS.AMQP/Message/NmsMessage.cs
+++ b/src/NMS.AMQP/Message/NmsMessage.cs
@@ -61,8 +61,22 @@
 
         public MsgDeliveryMode NMSDeliveryMode
         {
-            get => Facade.NMSDeliveryMode;
-            set => Facade.NMSDeliveryMode = value;
+            get => Facade.IsPersistent ? MsgDeliveryMode.Persistent : MsgDeliveryMode.NonPersistent;
+            set
+            {
+                CheckReadOnly();
+                switch (value)
+                {
+                    case MsgDeliveryMode.Persistent:
+                        Facade.IsPersistent = true;
+                        break;
+                    case MsgDeliveryMode.NonPersistent:
+                        Facade.IsPersistent = false;
+                        break;
+                    default:
+                        throw new NMSException($"Invalid DeliveryMode specified: {value}");
+                }
+            }
         }
 
         public MsgPriority NMSPriority
diff --git a/src/NMS.AMQP/Provider/Amqp/Message/AmqpNmsMessageFacade.cs b/src/NMS.AMQP/Provider/Amqp/Message/AmqpNmsMessageFacade.cs
index 8e14526..29ec18c 100644
--- a/src/NMS.AMQP/Provider/Amqp/Message/AmqpNmsMessageFacade.cs
+++ b/src/NMS.AMQP/Provider/Amqp/Message/AmqpNmsMessageFacade.cs
@@ -158,8 +158,12 @@
             get => amqpTimeToLiveOverride ?? TimeSpan.FromMilliseconds(Header.Ttl);
             set => amqpTimeToLiveOverride = value;
         }
-
-        public MsgDeliveryMode NMSDeliveryMode { get; set; }
+        
+        public bool IsPersistent
+        {
+            get => Message.Header.Durable;
+            set => Message.Header.Durable = value;
+        }
 
         public MsgPriority NMSPriority
         {
diff --git a/test/Apache-NMS-AMQP-Test/Message/Facade/NmsTestMessageFacade.cs b/test/Apache-NMS-AMQP-Test/Message/Facade/NmsTestMessageFacade.cs
index 4f04440..d7f3e09 100644
--- a/test/Apache-NMS-AMQP-Test/Message/Facade/NmsTestMessageFacade.cs
+++ b/test/Apache-NMS-AMQP-Test/Message/Facade/NmsTestMessageFacade.cs
@@ -67,7 +67,6 @@
         public string NMSCorrelationID { get; set; }
         public IDestination NMSDestination { get; set; }
         public TimeSpan NMSTimeToLive { get; set; }
-        public MsgDeliveryMode NMSDeliveryMode { get; set; }
         public MsgPriority NMSPriority { get; set; }
         public bool NMSRedelivered { get; set; }
         public IDestination NMSReplyTo { get; set; }
@@ -77,6 +76,8 @@
         public uint GroupSequence { get; set; }
         public DateTime Expiration { get; set; }
         public sbyte JmsMsgType { get; }
+        public bool IsPersistent { get; set; }
+
         public INmsMessageFacade Copy()
         {
             return null;
diff --git a/test/Apache-NMS-AMQP-Test/Provider/Amqp/AmqpNmsMessageFacadeTest.cs b/test/Apache-NMS-AMQP-Test/Provider/Amqp/AmqpNmsMessageFacadeTest.cs
index 8bc878a..0da7b33 100644
--- a/test/Apache-NMS-AMQP-Test/Provider/Amqp/AmqpNmsMessageFacadeTest.cs
+++ b/test/Apache-NMS-AMQP-Test/Provider/Amqp/AmqpNmsMessageFacadeTest.cs
@@ -1330,7 +1330,7 @@
             source.NMSMessageId = "ID:TEST-MESSAGEID";
             source.NMSPriority = MsgPriority.High;
             source.RedeliveryCount = 12;
-            source.NMSDeliveryMode = MsgDeliveryMode.Persistent;
+            source.IsPersistent = true;
             source.NMSTimestamp = DateTime.UtcNow;
             source.NMSTimeToLive = TimeSpan.FromDays(1);
             source.UserId = "Cookie-Monster";
@@ -1349,7 +1349,7 @@
             Assert.AreEqual(source.NMSMessageId, copy.NMSMessageId);
             Assert.AreEqual(source.NMSPriority, copy.NMSPriority);
             Assert.AreEqual(source.RedeliveryCount, copy.RedeliveryCount);
-            Assert.AreEqual(source.NMSDeliveryMode, copy.NMSDeliveryMode);
+            Assert.AreEqual(source.IsPersistent, copy.IsPersistent);
             Assert.AreEqual(source.UserId, copy.UserId);
             Assert.AreEqual(source.NMSTimeToLive, copy.NMSTimeToLive);
             Assert.IsTrue(Math.Abs((copy.Expiration - source.Expiration).TotalMilliseconds) < 1);