Bagikan melalui


MessageQueue.Send Metode

Definisi

Mengirim objek ke antrean.

Overload

Send(Object)

Mengirim objek ke antrean non-transaksi yang direferensikan oleh ini MessageQueue.

Send(Object, MessageQueueTransaction)

Mengirim objek ke antrean transaksi yang direferensikan oleh ini MessageQueue.

Send(Object, MessageQueueTransactionType)

Mengirim objek ke antrean yang direferensikan oleh ini MessageQueue.

Send(Object, String)

Mengirim objek ke antrean non-transaksi yang direferensikan oleh ini MessageQueue dan menentukan label untuk pesan.

Send(Object, String, MessageQueueTransaction)

Mengirim objek ke antrean transaksi yang direferensikan oleh ini MessageQueue dan menentukan label untuk pesan.

Send(Object, String, MessageQueueTransactionType)

Mengirim objek ke antrean yang direferensikan oleh ini MessageQueue dan menentukan label untuk pesan.

Send(Object)

Mengirim objek ke antrean non-transaksi yang direferensikan oleh ini MessageQueue.

public:
 void Send(System::Object ^ obj);
public void Send (object obj);
member this.Send : obj -> unit
Public Sub Send (obj As Object)

Parameter

obj
Object

Objek yang akan dikirim ke antrean.

Pengecualian

Properti Path belum disetel.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut tersambung ke antrean pesan dan mengirim pesan ke antrean.

#using <system.dll>
#using <system.messaging.dll.>

using namespace System;
using namespace System::Messaging;
ref class MyNewQueue
{
public:
   void SendMessage()
   {
      
      // Connect to a queue on the local computer.
      MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
      
      // Send a message to the queue.
      if ( myQueue->Transactional == true )
      {
         
         // Create a transaction.
         MessageQueueTransaction^ myTransaction = gcnew MessageQueueTransaction;
         
         // Begin the transaction.
         myTransaction->Begin();
         
         // Send the message.
         myQueue->Send( "My Message Data.", myTransaction );
         
         // Commit the transaction.
         myTransaction->Commit();
      }
      else
      {
         myQueue->Send( "My Message Data." );
      }

      return;
   }

};

int main()
{
   
   // Create a new instance of the class.
   MyNewQueue^ myNewQueue = gcnew MyNewQueue;
   
   // Send a message to a queue.
   myNewQueue->SendMessage();
   return 0;
}
using System;
using System.Messaging;

namespace MyProject
{

    /// <summary>
    /// Provides a container class for the example.
    /// </summary>
    public class MyNewQueue
    {

        //**************************************************
        // Provides an entry point into the application.
        //
        // This example sends a message to a queue.
        //**************************************************

        public static void Main()
        {
            // Create a new instance of the class.
            MyNewQueue myNewQueue = new MyNewQueue();

            // Send a message to a queue.
            myNewQueue.SendMessage();

            return;
        }

        //**************************************************
        // Sends a message to a queue.
        //**************************************************
        
        public void SendMessage()
        {
                        
            // Connect to a queue on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\myQueue");

            // Send a message to the queue.
            if (myQueue.Transactional == true)
            {
                // Create a transaction.
                MessageQueueTransaction myTransaction = new
                    MessageQueueTransaction();

                // Begin the transaction.
                myTransaction.Begin();

                // Send the message.
                myQueue.Send("My Message Data.", myTransaction);

                // Commit the transaction.
                myTransaction.Commit();
            }
            else
            {
                myQueue.Send("My Message Data.");
            }

            return;
        }
    }
}
Imports System.Messaging

Public Class MyNewQueue


        '
        ' Provides an entry point into the application.
        ' 
        ' This example sends a message to a queue.
        '

        Public Shared Sub Main()

            ' Create a new instance of the class.
            Dim myNewQueue As New MyNewQueue

            ' Send a message to a queue.
            myNewQueue.SendMessage()

            Return

        End Sub


        '
        ' Sends a message to a queue.
        '

        Public Sub SendMessage()

            ' Connect to a queue on the local computer.
            Dim myQueue As New MessageQueue(".\myQueue")

            ' Send a message to the queue.
            If myQueue.Transactional = True Then

                ' Create a transaction.
                Dim myTransaction As New MessageQueueTransaction

                ' Begin the transaction.
                myTransaction.Begin()

                ' Send the message.
                myQueue.Send("My Message Data.", myTransaction)

                ' Commit the transaction.
                myTransaction.Commit()

            Else
                myQueue.Send("My Message Data.")
            End If

            Return

        End Sub

End Class

Contoh kode berikut mengirimkan kelas yang ditentukan Order aplikasi ke antrean lalu menerima pesan dari antrean tersebut.

Keterangan

Gunakan kelebihan beban ini untuk mengirim pesan yang berisi obj parameter ke antrean yang direferensikan MessageQueueoleh . Objek yang Anda kirim ke antrean dapat berupa Message atau objek terkelola apa pun. Jika Anda mengirim objek Messageselain , objek diserialisasikan dan dimasukkan ke dalam isi pesan.

Jika Anda menggunakan kelebihan beban ini untuk mengirim pesan ke antrean transaksi, pesan akan dikirim ke antrean surat gagal. Jika Anda ingin pesan menjadi bagian dari transaksi yang berisi pesan lain, gunakan kelebihan beban yang mengambil MessageQueueTransaction atau MessageQueueTransactionType sebagai parameter.

Jika Anda tidak mengatur Formatter properti sebelum memanggil Send(Object), pemformat default ke XmlMessageFormatter.

Properti DefaultPropertiesToSend berlaku untuk objek apa pun selain Message. Jika Anda menentukan, misalnya, label atau prioritas menggunakan DefaultPropertiesToSend anggota, nilai-nilai ini berlaku untuk pesan apa pun yang berisi objek yang tidak berjenis Message saat aplikasi Anda mengirimkannya ke antrean. Saat mengirim , nilai properti yang ditetapkan untuk Message diutamakan DefaultPropertiesToSend dan properti pesan Message.Formatter lebih diutamakan daripada properti antreanMessageQueue.Formatter.Message

Tabel berikut ini memperlihatkan apakah metode ini tersedia dalam berbagai mode Grup Kerja.

Mode grup kerja Tersedia
Komputer lokal Ya
Komputer lokal dan nama format langsung Ya
Komputer jarak jauh Tidak
Komputer jarak jauh dan nama format langsung Ya

Lihat juga

Berlaku untuk

Send(Object, MessageQueueTransaction)

Mengirim objek ke antrean transaksi yang direferensikan oleh ini MessageQueue.

public:
 void Send(System::Object ^ obj, System::Messaging::MessageQueueTransaction ^ transaction);
public void Send (object obj, System.Messaging.MessageQueueTransaction transaction);
member this.Send : obj * System.Messaging.MessageQueueTransaction -> unit
Public Sub Send (obj As Object, transaction As MessageQueueTransaction)

Parameter

obj
Object

Objek yang akan dikirim ke antrean.

Pengecualian

Parameternya transaction adalah null.

Properti Path belum disetel.

-atau-

Aplikasi Antrean Pesan menunjukkan penggunaan transaksi yang salah.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut mengirimkan string ke antrean transaksi, lalu menerima pesan dari antrean tersebut.

#using <system.dll>
#using <system.messaging.dll>

using namespace System;
using namespace System::Messaging;

/// <summary>
/// Provides a container class for the example.
/// </summary>
ref class MyNewQueue
{
public:

   //*************************************************
   // Sends a message to a queue.
   //*************************************************
   void SendMessageTransactional()
   {
      // Connect to a queue on the local computer.
      MessageQueue^ myQueue = gcnew MessageQueue( ".\\myTransactionalQueue" );

      // Send a message to the queue.
      if ( myQueue->Transactional == true )
      {
         // Create a transaction.
         MessageQueueTransaction^ myTransaction = gcnew MessageQueueTransaction;

         // Begin the transaction.
         myTransaction->Begin();

         // Send the message.
         myQueue->Send( "My Message Data.", myTransaction );

         // Commit the transaction.
         myTransaction->Commit();
      }

      return;
   }


   //*************************************************
   // Receives a message containing an Order.
   //*************************************************
   void ReceiveMessageTransactional()
   {
      // Connect to a transactional queue on the local computer.
      MessageQueue^ myQueue = gcnew MessageQueue( ".\\myTransactionalQueue" );

      // Set the formatter.
      array<Type^>^p = gcnew array<Type^>(1);
      p[ 0 ] = String::typeid;
      myQueue->Formatter = gcnew XmlMessageFormatter( p );

      // Create a transaction.
      MessageQueueTransaction^ myTransaction = gcnew MessageQueueTransaction;
      try
      {
         // Begin the transaction.
         myTransaction->Begin();

         // Receive the message. 
         Message^ myMessage = myQueue->Receive( myTransaction );
         String^ myOrder = static_cast<String^>(myMessage->Body);

         // Display message information.
         Console::WriteLine( myOrder );

         // Commit the transaction.
         myTransaction->Commit();
      }
      catch ( MessageQueueException^ e ) 
      {
         // Handle nontransactional queues.
         if ( e->MessageQueueErrorCode == MessageQueueErrorCode::TransactionUsage )
         {
            Console::WriteLine( "Queue is not transactional." );
         }

         // Else catch other sources of MessageQueueException.
         // Roll back the transaction.
         myTransaction->Abort();
      }

      // Catch other exceptions as necessary, such as 
      // InvalidOperationException, thrown when the formatter 
      // cannot deserialize the message.
      return;
   }
};

//*************************************************
// Provides an entry point into the application.
// 
// This example sends and receives a message from
// a transactional queue.
//*************************************************
int main()
{
   // Create a new instance of the class.
   MyNewQueue^ myNewQueue = gcnew MyNewQueue;

   // Send a message to a queue.
   myNewQueue->SendMessageTransactional();

   // Receive a message from a queue.
   myNewQueue->ReceiveMessageTransactional();
   return 0;
}
using System;
using System.Messaging;

namespace MyProject
{

    /// <summary>
    /// Provides a container class for the example.
    /// </summary>
    public class MyNewQueue
    {

        //**************************************************
        // Provides an entry point into the application.
        //
        // This example sends and receives a message from
        // a transactional queue.
        //**************************************************

        public static void Main()
        {
            // Create a new instance of the class.
            MyNewQueue myNewQueue = new MyNewQueue();

            // Send a message to a queue.
            myNewQueue.SendMessageTransactional();

            // Receive a message from a queue.
            myNewQueue.ReceiveMessageTransactional();
        
            return;
        }

        //**************************************************
        // Sends a message to a queue.
        //**************************************************
        
        public void SendMessageTransactional()
        {
                        
            // Connect to a queue on the local computer.
            MessageQueue myQueue = new
                MessageQueue(".\\myTransactionalQueue");

            // Send a message to the queue.
            if (myQueue.Transactional == true)
            {
                // Create a transaction.
                MessageQueueTransaction myTransaction = new
                    MessageQueueTransaction();

                // Begin the transaction.
                myTransaction.Begin();

                // Send the message.
                myQueue.Send("My Message Data.", myTransaction);

                // Commit the transaction.
                myTransaction.Commit();
            }

            return;
        }

        //**************************************************
        // Receives a message containing an Order.
        //**************************************************
        
        public  void ReceiveMessageTransactional()
        {
            // Connect to a transactional queue on the local computer.
            MessageQueue myQueue = new
                MessageQueue(".\\myTransactionalQueue");

            // Set the formatter.
            myQueue.Formatter = new XmlMessageFormatter(new Type[]
                {typeof(String)});
            
            // Create a transaction.
            MessageQueueTransaction myTransaction = new
                MessageQueueTransaction();

            try
            {
                // Begin the transaction.
                myTransaction.Begin();
                
                // Receive the message.
                Message myMessage =	myQueue.Receive(myTransaction);
                String myOrder = (String)myMessage.Body;

                // Display message information.
                Console.WriteLine(myOrder);

                // Commit the transaction.
                myTransaction.Commit();
            }
            
            catch (MessageQueueException e)
            {
                // Handle nontransactional queues.
                if (e.MessageQueueErrorCode ==
                    MessageQueueErrorCode.TransactionUsage)
                {
                    Console.WriteLine("Queue is not transactional.");
                }
                
                // Else catch other sources of MessageQueueException.

                // Roll back the transaction.
                myTransaction.Abort();
            }

            // Catch other exceptions as necessary, such as
            // InvalidOperationException, thrown when the formatter
            // cannot deserialize the message.

            return;
        }
    }
}
Imports System.Messaging

   
Public Class MyNewQueue


        '
        ' Provides an entry point into the application.
        ' 
        ' This example sends and receives a message from
        ' a transactional queue.
        '

        Public Shared Sub Main()

            ' Create a new instance of the class.
            Dim myNewQueue As New MyNewQueue

            ' Send a message to a queue.
            myNewQueue.SendMessageTransactional()

            ' Receive a message from a queue.
            myNewQueue.ReceiveMessageTransactional()

            Return

        End Sub


        '
        ' Sends a message to a queue.
        '

        Public Sub SendMessageTransactional()

            ' Connect to a queue on the local computer.
            Dim myQueue As New MessageQueue(".\myTransactionalQueue")

            ' Send a message to the queue.
            If myQueue.Transactional = True Then
                ' Create a transaction.
                Dim myTransaction As New MessageQueueTransaction

                ' Begin the transaction.
                myTransaction.Begin()

                ' Send the message.
                myQueue.Send("My Message Data.", myTransaction)

                ' Commit the transaction.
                myTransaction.Commit()
            End If

            Return

        End Sub


        '
        ' Receives a message containing an Order.
        '

        Public Sub ReceiveMessageTransactional()

            ' Connect to a transactional queue on the local computer.
            Dim myQueue As New MessageQueue(".\myTransactionalQueue")

            ' Set the formatter.
            myQueue.Formatter = New XmlMessageFormatter(New Type() _
                {GetType([String])})

            ' Create a transaction.
            Dim myTransaction As New MessageQueueTransaction

            Try

                ' Begin the transaction.
                myTransaction.Begin()

                ' Receive the message. 
                Dim myMessage As Message = _
                    myQueue.Receive(myTransaction)
                Dim myOrder As [String] = CType(myMessage.Body, _
                    [String])

                ' Display message information.
                Console.WriteLine(myOrder)

                ' Commit the transaction.
                myTransaction.Commit()


            Catch e As MessageQueueException

                ' Handle nontransactional queues.
                If e.MessageQueueErrorCode = _
                    MessageQueueErrorCode.TransactionUsage Then

                    Console.WriteLine("Queue is not transactional.")

                End If

                ' Else catch other sources of a MessageQueueException.


                ' Roll back the transaction.
                myTransaction.Abort()


                ' Catch other exceptions as necessary, such as 
                ' InvalidOperationException, thrown when the formatter
                ' cannot deserialize the message.

            End Try

            Return

        End Sub

End Class

Keterangan

Gunakan kelebihan beban ini untuk mengirim pesan yang berisi obj parameter ke antrean transaksi yang direferensikan oleh MessageQueue, menggunakan konteks transaksi internal yang ditentukan oleh transaction parameter . Objek yang Anda kirim ke antrean dapat berupa Message atau objek terkelola apa pun. Jika Anda mengirim objek Messageselain , objek diserialisasikan dan dimasukkan ke dalam isi pesan.

Jika Anda menggunakan kelebihan beban ini untuk mengirim pesan ke antrean non-transaksi, pesan mungkin dikirim ke antrean surat mati tanpa melemparkan pengecualian.

Jika Anda tidak mengatur Formatter properti sebelum memanggil Send(Object), pemformat default ke XmlMessageFormatter.

Properti DefaultPropertiesToSend berlaku untuk objek apa pun selain Message. Jika Anda menentukan, misalnya, label atau prioritas menggunakan DefaultPropertiesToSend anggota, nilai-nilai ini berlaku untuk pesan apa pun yang berisi objek yang tidak berjenis Message saat aplikasi Anda mengirimkannya ke antrean. Saat mengirim , nilai properti yang ditetapkan untuk Message diutamakan DefaultPropertiesToSend dan properti pesan Message.Formatter lebih diutamakan daripada properti antreanMessageQueue.Formatter.Message

MessageQueueTransaction mengetahui alur apartemen, jadi jika status apartemen Anda adalah STA, Anda tidak dapat menggunakan transaksi di beberapa utas. Visual Basic mengatur status utas utama ke STA, jadi Anda harus menerapkan MTAThreadAttribute di Main subrutin. Jika tidak, mengirim pesan transaksi menggunakan utas MessageQueueException lain akan memberikan pengecualian. Anda menerapkan MTAThreadAttribute dengan menggunakan fragmen berikut.

<System.MTAThreadAttribute>
 public sub Main()

Tabel berikut ini memperlihatkan apakah metode ini tersedia dalam berbagai mode Grup Kerja.

Mode grup kerja Tersedia
Komputer lokal Ya
Komputer lokal dan nama format langsung Ya
Komputer jarak jauh Tidak
Komputer jarak jauh dan nama format langsung Ya

Lihat juga

Berlaku untuk

Send(Object, MessageQueueTransactionType)

Mengirim objek ke antrean yang direferensikan oleh ini MessageQueue.

public:
 void Send(System::Object ^ obj, System::Messaging::MessageQueueTransactionType transactionType);
public void Send (object obj, System.Messaging.MessageQueueTransactionType transactionType);
member this.Send : obj * System.Messaging.MessageQueueTransactionType -> unit
Public Sub Send (obj As Object, transactionType As MessageQueueTransactionType)

Parameter

obj
Object

Objek yang akan dikirim ke antrean.

transactionType
MessageQueueTransactionType

Salah MessageQueueTransactionType satu nilai, yang menjelaskan jenis konteks transaksi untuk dikaitkan dengan pesan.

Pengecualian

Parameter transactionType bukan salah MessageQueueTransactionType satu anggota.

Properti Path belum disetel.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut menunjukkan penggunaan Send(Object, MessageQueueTransactionType).


// Connect to a transactional queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleTransQueue");

// Create a new message.
Message^ msg = gcnew Message("Example Message Body");

// Send the message.
queue->Send(msg, MessageQueueTransactionType::Single);

queue->Close();

// Connect to a transactional queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleTransQueue");

// Create a new message.
Message msg = new Message("Example Message Body");

// Send the message.
queue.Send(msg, MessageQueueTransactionType.Single);

Keterangan

Gunakan kelebihan beban ini untuk mengirim pesan yang berisi obj parameter ke antrean yang direferensikan MessageQueueoleh , menggunakan konteks transaksi yang ditentukan oleh transactionType parameter . Tentukan Automatic untuk transactionType parameter jika sudah ada konteks transaksi eksternal yang dilampirkan ke utas yang ingin Anda gunakan untuk mengirim pesan. Tentukan Single apakah Anda ingin mengirim pesan sebagai satu transaksi internal. Anda dapat menentukan None apakah Anda ingin mengirim pesan transaksi ke utas non-transaksi.

Objek yang Anda kirim ke antrean dapat berupa Message atau objek terkelola apa pun. Jika Anda mengirim objek Messageselain , objek diserialisasikan dan dimasukkan ke dalam isi pesan.

Jika Anda tidak mengatur Formatter properti sebelum memanggil Send(Object), pemformat default ke XmlMessageFormatter.

Properti DefaultPropertiesToSend berlaku untuk objek apa pun selain Message. Jika Anda menentukan, misalnya, label atau prioritas menggunakan DefaultPropertiesToSend anggota, nilai-nilai ini berlaku untuk pesan apa pun yang berisi objek yang tidak berjenis Message saat aplikasi Anda mengirimkannya ke antrean. Saat mengirim , nilai properti yang ditetapkan untuk Message diutamakan DefaultPropertiesToSend dan properti pesan Message.Formatter lebih diutamakan daripada properti antreanMessageQueue.Formatter.Message

Tabel berikut ini memperlihatkan apakah metode ini tersedia dalam berbagai mode Grup Kerja.

Mode grup kerja Tersedia
Komputer lokal Ya
Komputer lokal dan nama format langsung Ya
Komputer jarak jauh Tidak
Komputer jarak jauh dan nama format langsung Ya

Lihat juga

Berlaku untuk

Send(Object, String)

Mengirim objek ke antrean non-transaksi yang direferensikan oleh ini MessageQueue dan menentukan label untuk pesan.

public:
 void Send(System::Object ^ obj, System::String ^ label);
public void Send (object obj, string label);
member this.Send : obj * string -> unit
Public Sub Send (obj As Object, label As String)

Parameter

obj
Object

Objek yang akan dikirim ke antrean.

label
String

Label pesan.

Pengecualian

Parameternya label adalah null.

Properti Path belum disetel.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut menunjukkan penggunaan Send(Object, String).


// Connect to a queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleQueue");

// Create a new message.
Message^ msg = gcnew Message("Example Message Body");

// Send the message.
queue->Send(msg, "Example Message Label");

queue->Close();

// Connect to a queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleQueue");

// Create a new message.
Message msg = new Message("Example Message Body");

// Send the message.
queue.Send(msg, "Example Message Label");

Keterangan

Gunakan kelebihan beban ini untuk mengirim pesan yang berisi obj parameter ke antrean yang direferensikan MessageQueueoleh . Dengan kelebihan beban ini, Anda dapat menentukan label string yang mengidentifikasi pesan. Objek yang Anda kirim ke antrean dapat berupa Message, struktur, objek data, atau objek terkelola apa pun. Jika Anda mengirim objek Messageselain , objek diserialisasikan dan dimasukkan ke dalam isi pesan.

Label pesan berbeda dari label antrean pesan, tetapi keduanya bergantung pada aplikasi dan tidak memiliki arti warisan untuk Antrean Pesan.

Jika Anda menggunakan kelebihan beban ini untuk mengirim pesan ke antrean transaksi, pesan akan dikirim ke antrean surat gagal. Jika Anda ingin pesan menjadi bagian dari transaksi yang berisi pesan lain, gunakan kelebihan beban yang mengambil MessageQueueTransaction atau MessageQueueTransactionType sebagai parameter.

Properti Path untuk instans ini MessageQueue harus ditentukan sebelum Anda mengirim pesan. Jika Anda tidak mengatur Formatter properti sebelum memanggil Send(Object), pemformat default ke XmlMessageFormatter.

Properti DefaultPropertiesToSend berlaku untuk objek apa pun selain Message. Jika Anda menentukan, misalnya, label atau prioritas menggunakan DefaultPropertiesToSend anggota, nilai-nilai ini berlaku untuk pesan apa pun yang berisi objek yang tidak berjenis Message saat aplikasi Anda mengirimkannya ke antrean. Saat mengirim , nilai properti yang ditetapkan untuk Message diutamakan DefaultPropertiesToSend dan properti pesan Message.Formatter lebih diutamakan daripada properti antreanMessageQueue.Formatter.Message

Tabel berikut ini memperlihatkan apakah metode ini tersedia dalam berbagai mode Grup Kerja.

Mode grup kerja Tersedia
Komputer lokal Ya
Komputer lokal dan nama format langsung Ya
Komputer jarak jauh Tidak
Komputer jarak jauh dan nama format langsung Ya

Lihat juga

Berlaku untuk

Send(Object, String, MessageQueueTransaction)

Mengirim objek ke antrean transaksi yang direferensikan oleh ini MessageQueue dan menentukan label untuk pesan.

public:
 void Send(System::Object ^ obj, System::String ^ label, System::Messaging::MessageQueueTransaction ^ transaction);
public void Send (object obj, string label, System.Messaging.MessageQueueTransaction transaction);
member this.Send : obj * string * System.Messaging.MessageQueueTransaction -> unit
Public Sub Send (obj As Object, label As String, transaction As MessageQueueTransaction)

Parameter

obj
Object

Objek yang akan dikirim ke antrean.

label
String

Label pesan.

Pengecualian

Parameternya label adalah null.

-atau-

Parameternya transaction adalah null.

Properti Path belum disetel.

-atau-

Aplikasi Antrean Pesan menunjukkan penggunaan transaksi yang salah.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut menunjukkan penggunaan Send(Object, String, MessageQueueTransaction).


// Connect to a transactional queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleTransQueue");

// Create a new message.
Message^ msg = gcnew Message("Example Message Body");

// Create a message queuing transaction.
MessageQueueTransaction^ transaction = gcnew MessageQueueTransaction();

try
{
    // Begin a transaction.
    transaction->Begin();

    // Send the message to the queue.
    queue->Send(msg, "Example Message Label", transaction);

    // Commit the transaction.
    transaction->Commit();
}
catch (Exception^ ex)
{
    // Cancel the transaction.
    transaction->Abort();

    // Propagate the exception.
    throw ex;
}
finally
{
    // Dispose of the transaction object.
    delete transaction;
    queue->Close();
}

// Connect to a transactional queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleTransQueue");

// Create a new message.
Message msg = new Message("Example Message Body");

// Create a message queuing transaction.
MessageQueueTransaction transaction = new MessageQueueTransaction();

try
{
    // Begin a transaction.
    transaction.Begin();

    // Send the message to the queue.
    queue.Send(msg, "Example Message Label", transaction);

    // Commit the transaction.
    transaction.Commit();
}
catch(System.Exception e)
{
    // Cancel the transaction.
    transaction.Abort();

    // Propagate the exception.
    throw e;
}
finally
{
    // Dispose of the transaction object.
    transaction.Dispose();
}

Keterangan

Gunakan kelebihan beban ini untuk mengirim pesan yang berisi obj parameter ke antrean transaksi yang direferensikan oleh MessageQueue, menggunakan konteks transaksi internal yang ditentukan oleh transaction parameter . Dengan kelebihan beban ini, Anda dapat menentukan label string yang mengidentifikasi pesan. Objek yang Anda kirim ke antrean dapat berupa Message, struktur, objek data, atau objek terkelola apa pun. Jika Anda mengirim objek Messageselain , objek diserialisasikan dan dimasukkan ke dalam isi pesan.

Label pesan berbeda dari label antrean pesan, tetapi keduanya bergantung pada aplikasi dan tidak memiliki arti warisan untuk Antrean Pesan.

Jika Anda menggunakan kelebihan beban ini untuk mengirim pesan ke antrean non-transaksi, pesan mungkin dikirim ke antrean surat mati tanpa melemparkan pengecualian.

Jika Anda tidak mengatur Formatter properti sebelum memanggil Send(Object), pemformat default ke XmlMessageFormatter.

Properti DefaultPropertiesToSend berlaku untuk objek apa pun selain Message. Jika Anda menentukan, misalnya, label atau prioritas menggunakan DefaultPropertiesToSend anggota, nilai-nilai ini berlaku untuk pesan apa pun yang berisi objek yang tidak berjenis Message saat aplikasi Anda mengirimkannya ke antrean. Saat mengirim , nilai properti yang Messageditetapkan untuk Message diutamakan DefaultPropertiesToSend dan properti pesan Message.Formatter lebih diutamakan daripada properti antrean MessageQueue.Formatter

MessageQueueTransaction mengetahui alur apartemen, jadi jika status apartemen Anda adalah STA, Anda tidak dapat menggunakan transaksi di beberapa utas. Visual Basic mengatur status utas utama ke STA, jadi Anda harus menerapkan MTAThreadAttribute di Main subrutin. Jika tidak, mengirim pesan transaksi menggunakan utas MessageQueueException lain akan memberikan pengecualian. Anda menerapkan MTAThreadAttribute dengan menggunakan fragmen berikut.

<System.MTAThreadAttribute>
 public sub Main()

Tabel berikut ini memperlihatkan apakah metode ini tersedia dalam berbagai mode Grup Kerja.

Mode grup kerja Tersedia
Komputer lokal Ya
Komputer lokal dan nama format langsung Ya
Komputer jarak jauh Tidak
Komputer jarak jauh dan nama format langsung Ya

Lihat juga

Berlaku untuk

Send(Object, String, MessageQueueTransactionType)

Mengirim objek ke antrean yang direferensikan oleh ini MessageQueue dan menentukan label untuk pesan.

public:
 void Send(System::Object ^ obj, System::String ^ label, System::Messaging::MessageQueueTransactionType transactionType);
public void Send (object obj, string label, System.Messaging.MessageQueueTransactionType transactionType);
member this.Send : obj * string * System.Messaging.MessageQueueTransactionType -> unit
Public Sub Send (obj As Object, label As String, transactionType As MessageQueueTransactionType)

Parameter

obj
Object

Objek yang akan dikirim ke antrean.

label
String

Label pesan.

transactionType
MessageQueueTransactionType

Salah MessageQueueTransactionType satu nilai, yang menjelaskan jenis konteks transaksi untuk dikaitkan dengan pesan.

Pengecualian

Parameternya label adalah null.

Aplikasi Antrean Pesan menunjukkan penggunaan transaksi yang salah.

Parameter transactionType bukan salah MessageQueueTransactionType satu anggota.

Properti Path belum disetel.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut menunjukkan penggunaan Send(Object, String, MessageQueueTransactionType).


// Connect to a transactional queue on the local computer.
MessageQueue^ queue = gcnew MessageQueue(".\\exampleTransQueue");

// Create a new message.
Message^ msg = gcnew Message("Example Message Body");

// Send the message.
queue->Send(msg, "Example Message Label",
    MessageQueueTransactionType::Single);

queue->Close();

// Connect to a transactional queue on the local computer.
MessageQueue queue = new MessageQueue(".\\exampleTransQueue");

// Create a new message.
Message msg = new Message("Example Message Body");

// Send the message.
queue.Send(msg, "Example Message Label",
    MessageQueueTransactionType.Single);

Keterangan

Gunakan kelebihan beban ini untuk mengirim pesan yang berisi obj parameter ke antrean yang direferensikan MessageQueueoleh , menggunakan konteks transaksi yang ditentukan oleh transactionType parameter . Tentukan Automatic untuk transactionType parameter jika sudah ada konteks transaksi eksternal yang dilampirkan ke utas yang ingin Anda gunakan untuk mengirim pesan. Tentukan Single apakah Anda ingin mengirim pesan sebagai satu transaksi internal. Anda dapat menentukan None apakah Anda ingin mengirim pesan transaksi ke utas non-transaksi.

Objek yang Anda kirim ke antrean dapat berupa Message atau objek terkelola apa pun. Jika Anda mengirim objek Messageselain , objek diserialisasikan dan dimasukkan ke dalam isi pesan. Dengan kelebihan beban ini, Anda dapat menentukan label string yang mengidentifikasi pesan.

Label pesan berbeda dari label antrean pesan, tetapi keduanya bergantung pada aplikasi dan tidak memiliki arti warisan untuk Antrean Pesan.

Jika Anda tidak mengatur Formatter properti sebelum memanggil Send(Object), pemformat default ke XmlMessageFormatter.

Properti DefaultPropertiesToSend berlaku untuk objek apa pun selain Message. Jika Anda menentukan, misalnya, label atau prioritas menggunakan DefaultPropertiesToSend anggota, nilai-nilai ini berlaku untuk pesan apa pun yang berisi objek yang tidak berjenis Message saat aplikasi Anda mengirimkannya ke antrean. Saat mengirim , nilai properti yang ditetapkan untuk Message diutamakan daripada DefaultPropertiesToSend, dan properti pesan Message.Formatter lebih diutamakan daripada properti antreanMessageQueue.Formatter.Message

Tabel berikut ini memperlihatkan apakah metode ini tersedia dalam berbagai mode Grup Kerja.

Mode grup kerja Tersedia
Komputer lokal Ya
Komputer lokal dan nama format langsung Ya
Komputer jarak jauh Tidak
Komputer jarak jauh dan nama format langsung Ya

Lihat juga

Berlaku untuk