Csharp/CSharp Tutorial/Windows/MessageQueue

Материал из .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 );
    }
  }
}