Материал из .Net Framework эксперт
Format a message from MessageQueue in an XmlMessageFormatter
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();
}
}
}
Internal Transaction Producer
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 );
}
}
}
Receive message
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 );
}
}
}