Commit 4f42525397cbea4c426ad5789d81499637cb1b92
1 parent
6cd93dfa
v1.22
-MSMQ Send és Read rutinok tisztába tétele
Showing
2 changed files
with
57 additions
and
51 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs
| ... | ... | @@ -16,6 +16,7 @@ using VRH.Common; |
| 16 | 16 | using System.Xml.Linq; |
| 17 | 17 | using System.Text.RegularExpressions; |
| 18 | 18 | using System.ComponentModel; |
| 19 | +using System.IO; | |
| 19 | 20 | |
| 20 | 21 | namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
| 21 | 22 | { |
| ... | ... | @@ -728,28 +729,15 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
| 728 | 729 | using (var msmq = new MessageQueue(msmqFullname)) |
| 729 | 730 | { |
| 730 | 731 | if (Count(msmq) == 0) { return null; } |
| 731 | - | |
| 732 | - //frmA = new System.Messaging.ActiveXMessageFormatter(); | |
| 733 | - //frmA = new System.Messaging.BinaryMessageFormatter(); | |
| 734 | - //frmA = new System.Messaging.XmlMessageFormatter(); | |
| 735 | 732 | msmq.Formatter = messageformatter; |
| 736 | - | |
| 737 | - Message m = msmq.Receive(new TimeSpan(0)); | |
| 738 | - label = m.Label; | |
| 739 | - //m.BodyStream.Position = 0; | |
| 740 | - //var sr = new System.IO.StreamReader(m.BodyStream, encoding); | |
| 741 | - //body = sr.ReadToEnd().Replace(((char)0).ToString(), ""); | |
| 742 | - // encoding = System.Text.Encoding.UTF8; | |
| 743 | - // encoding = System.Text.Encoding.UTF7; | |
| 744 | - // encoding = System.Text.Encoding.UTF32; | |
| 745 | - // encoding = System.Text.Encoding.Unicode; | |
| 746 | - // encoding = System.Text.Encoding.BigEndianUnicode; | |
| 747 | - // encoding = System.Text.Encoding.ASCII; | |
| 748 | - // encoding = System.Text.Encoding.Default; | |
| 749 | - body = encoding.GetString((byte[])m.Body); | |
| 750 | - return m; | |
| 733 | + Message msg = msmq.Receive(new TimeSpan(0)); | |
| 734 | + label = msg.Label; | |
| 735 | + body = GetBody(msg, encoding); | |
| 736 | + return msg; | |
| 751 | 737 | } |
| 752 | 738 | } |
| 739 | + | |
| 740 | + | |
| 753 | 741 | public static Message ReadLast(string msmqFullname, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label) |
| 754 | 742 | { |
| 755 | 743 | body = ""; |
| ... | ... | @@ -758,28 +746,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
| 758 | 746 | { |
| 759 | 747 | if (Count(msmq) == 0) { return null; } |
| 760 | 748 | |
| 761 | - //frmA = new System.Messaging.ActiveXMessageFormatter(); | |
| 762 | - //frmA = new System.Messaging.BinaryMessageFormatter(); | |
| 763 | - //frmA = new System.Messaging.XmlMessageFormatter(); | |
| 764 | 749 | msmq.Formatter = messageformatter; |
| 765 | - //Message m = msmq.Receive(new TimeSpan(0)); | |
| 766 | - var m = msmq.ReceiveByLookupId(MessageLookupAction.Last, 0, null); | |
| 767 | - label = m.Label; | |
| 768 | - body = encoding.GetString((byte[])m.Body); | |
| 769 | - | |
| 770 | - | |
| 771 | - //m.BodyStream.Position = 0; | |
| 772 | - | |
| 773 | - //// encoding = System.Text.Encoding.UTF8; | |
| 774 | - //// encoding = System.Text.Encoding.UTF7; | |
| 775 | - //// encoding = System.Text.Encoding.UTF32; | |
| 776 | - //// encoding = System.Text.Encoding.Unicode; | |
| 777 | - //// encoding = System.Text.Encoding.BigEndianUnicode; | |
| 778 | - //// encoding = System.Text.Encoding.ASCII; | |
| 779 | - //// encoding = System.Text.Encoding.Default; | |
| 780 | - //var sr = new System.IO.StreamReader(m.BodyStream, encoding); | |
| 781 | - //body = sr.ReadToEnd().Replace(((char)0).ToString(), ""); | |
| 782 | - return m; | |
| 750 | + var msg = msmq.ReceiveByLookupId(MessageLookupAction.Last, 0, null); | |
| 751 | + label = msg.Label; | |
| 752 | + body = GetBody(msg, encoding); | |
| 753 | + return msg; | |
| 783 | 754 | } |
| 784 | 755 | } |
| 785 | 756 | public static Message ReadById(string msmqFullname, long msgid, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label) |
| ... | ... | @@ -791,23 +762,58 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
| 791 | 762 | if (Count(msmq) == 0) { return null; } |
| 792 | 763 | |
| 793 | 764 | msmq.Formatter = messageformatter; |
| 794 | - var m = msmq.ReceiveByLookupId(msgid); | |
| 795 | - label = m.Label; | |
| 796 | - body = encoding.GetString((byte[])m.Body); | |
| 797 | - return m; | |
| 765 | + var msg = msmq.ReceiveByLookupId(msgid); | |
| 766 | + label = msg.Label; | |
| 767 | + body = GetBody(msg, encoding); | |
| 768 | + return msg; | |
| 798 | 769 | } |
| 799 | 770 | } |
| 771 | + private static string GetBody(Message msg, Encoding encoding) | |
| 772 | + { | |
| 773 | + ////////////////////////////////////////////// | |
| 774 | + StreamReader reader; | |
| 775 | + string body; | |
| 776 | + if (msg.Formatter is XmlMessageFormatter) | |
| 777 | + { | |
| 778 | + ((XmlMessageFormatter)msg.Formatter).TargetTypes = new Type[] { typeof(string), }; | |
| 779 | + body = (string)msg.Body; | |
| 780 | + } | |
| 781 | + else | |
| 782 | + { | |
| 783 | + if (encoding == null) { body = (string)msg.Body; } | |
| 784 | + else { reader = new StreamReader(msg.BodyStream, encoding); body = reader.ReadToEnd(); } | |
| 785 | + } | |
| 786 | + ////////////////////////////////////////////// | |
| 787 | + //body = encoding.GetString((byte[])msg.Body); | |
| 788 | + ////////////////////////////////////////////////// | |
| 789 | + return body; | |
| 790 | + } | |
| 800 | 791 | public static void Send(string msmqFullname, string messagetosend, string messagelabel, IMessageFormatter messageformatter, Encoding encoding) |
| 801 | 792 | { |
| 802 | 793 | using (var msmq = new MessageQueue(msmqFullname)) |
| 803 | 794 | { |
| 804 | - ///frmA = new System.Messaging.ActiveXMessageFormatter(); | |
| 805 | - //enc = System.Text.Encoding.UTF8; | |
| 806 | 795 | msmq.Formatter = messageformatter; |
| 807 | - byte[] encodedmessage = encoding.GetBytes(messagetosend); | |
| 808 | - | |
| 809 | - msmq.Send(encodedmessage, messagelabel); | |
| 796 | + Message msg = new System.Messaging.Message(); | |
| 797 | + SetBody(msg, messagetosend, messageformatter, encoding); | |
| 798 | + msg.Label = messagelabel; | |
| 799 | + msmq.Send(msg); | |
| 800 | + } | |
| 801 | + } | |
| 802 | + private static Message SetBody(Message msg, string messagetosend, IMessageFormatter messageformatter, Encoding encoding) | |
| 803 | + { | |
| 804 | + ////////////////////////////////////////////////////////////////////////// | |
| 805 | + msg.Formatter = messageformatter; | |
| 806 | + if (msg.Formatter is XmlMessageFormatter) { msg.Body = messagetosend; } | |
| 807 | + else | |
| 808 | + { | |
| 809 | + if (encoding == null) { msg.Body = messagetosend; } | |
| 810 | + else { msg.BodyStream = new MemoryStream(encoding.GetBytes(messagetosend)); } | |
| 810 | 811 | } |
| 812 | + ////////////////////////////////////////////////////////////////////////// | |
| 813 | + //byte[] encodedmessage = encoding.GetBytes(messagetosend); | |
| 814 | + //msmq.Send(encodedmessage, messagelabel); | |
| 815 | + ////////////////////////////////////////////////////////////////////////// | |
| 816 | + return msg; | |
| 811 | 817 | } |
| 812 | 818 | public static long Count(MessageQueue messageQueue) |
| 813 | 819 | { | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
| ... | ... | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; |
| 32 | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
| 33 | 33 | // by using the '*' as shown below: |
| 34 | 34 | // [assembly: AssemblyVersion("1.0.*")] |
| 35 | -[assembly: AssemblyVersion("1.21.0.0")] | |
| 36 | -[assembly: AssemblyFileVersion("1.21.0.0")] | |
| 35 | +[assembly: AssemblyVersion("1.22.0.0")] | |
| 36 | +[assembly: AssemblyFileVersion("1.22.0.0")] | ... | ... |