Csharp/CSharp Tutorial/Windows/MessageQueue
Format a message from MessageQueue in an XmlMessageFormatter
<source lang="csharp">using System; using System.Messaging; class MainClass {
[STAThread] static void Main(string[] args) { MessageQueue txq1 = new MessageQueue( @".\Private$\txq1" ); MessageQueue txq2 = new MessageQueue( @".\Private$\txq2" ); using ( MessageQueueTransaction mqtx = new MessageQueueTransaction() ) { mqtx.Begin(); Message msgIn = txq1.Receive( mqtx ); msgIn.Formatter = new XmlMessageFormatter( new String[] { "System.String, mscorlib", } ); Message msgOut = new Message(); msgOut.Body = (string)msgIn.Body; txq2.Send( msgOut, mqtx ); System.Console.WriteLine( "Aborting message: {0}", (string)msgIn.Body ); //mqtx.Abort(); mqtx.rumit(); } }
}</source>
Internal Transaction Producer
<source lang="csharp">using System; using System.Messaging; class MainClass {
[STAThread] static void Main(string[] args) { MessageQueue txq1 = new MessageQueue( @".\Private$\txq1" ); for ( int i =1; i <= 20; i++ ) { Message msgOut = new Message(); msgOut.Body = "Message " + i; txq1.Send( msgOut, MessageQueueTransactionType.Single ); } }
}</source>
Receive message
<source lang="csharp">using System; using System.Messaging; class MainClass {
[STAThread] static void Main(string[] args) { MessageQueue txq2 = new MessageQueue( @".\Private$\txq2" ); while ( true ) { Message msgIn = txq2.Receive( MessageQueueTransactionType.Single ); msgIn.Formatter = new XmlMessageFormatter( new String[] { "System.String, mscorlib", } ); System.Console.WriteLine( "Received: {0}", (string)msgIn.Body ); } }
}</source>