MessageQueue.ReceiveById Metode

Definisi

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan, menghapusnya dari antrean.

Overload

ReceiveById(String)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan dari antrean non-transaksi dan segera menimbulkan pengecualian jika tidak ada pesan dengan pengidentifikasi yang ditentukan yang saat ini ada dalam antrean.

ReceiveById(String, MessageQueueTransaction)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan (dari antrean transaksi) dan segera menimbulkan pengecualian jika tidak ada pesan dengan pengidentifikasi yang ditentukan yang saat ini ada dalam antrean.

ReceiveById(String, MessageQueueTransactionType)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan dan segera menimbulkan pengecualian jika tidak ada pesan dengan pengidentifikasi yang ditentukan yang saat ini ada dalam antrean.

ReceiveById(String, TimeSpan)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan (dari antrean non-transaksi) dan menunggu hingga pesan dengan pengidentifikasi yang ditentukan tersedia dalam antrean atau waktu habis kedaluwarsa.

ReceiveById(String, TimeSpan, MessageQueueTransaction)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan (dari antrean transaksi) dan menunggu hingga pesan dengan pengidentifikasi yang ditentukan tersedia dalam antrean atau waktu habis kedaluwarsa.

ReceiveById(String, TimeSpan, MessageQueueTransactionType)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan dan menunggu hingga pesan dengan pengidentifikasi yang ditentukan tersedia dalam antrean atau waktu habis kedaluwarsa.

ReceiveById(String)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan dari antrean non-transaksi dan segera menimbulkan pengecualian jika tidak ada pesan dengan pengidentifikasi yang ditentukan yang saat ini ada dalam antrean.

public:
 System::Messaging::Message ^ ReceiveById(System::String ^ id);
public System.Messaging.Message ReceiveById (string id);
member this.ReceiveById : string -> System.Messaging.Message
Public Function ReceiveById (id As String) As Message

Parameter

id
String

Pesan Id yang akan diterima.

Mengembalikan

Properti Message yang Id cocok dengan parameter yang id diteruskan.

Pengecualian

Parameternya id adalah null.

Pesan dengan yang ditentukan id tidak dapat ditemukan.

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut menunjukkan penggunaan ReceiveById(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");

// Get the message's Id property value.
String^ id = msg->Id;

// Simulate doing other work so the message has time to arrive.
System::Threading::Thread::Sleep(TimeSpan::FromSeconds(10.0));

// Receive the message from the queue.
msg = queue->ReceiveById(id);

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");

// Get the message's Id property value.
string id = msg.Id;

// Simulate doing other work so the message has time to arrive.
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10.0));

// Receive the message from the queue.
msg = queue.ReceiveById(id);

Keterangan

Gunakan metode ini untuk membaca pesan dengan pengidentifikasi yang diketahui dan menghapusnya dari antrean. Metode ini segera melemparkan pengecualian jika pesan tidak ada dalam antrean.

Properti Id pesan unik di seluruh perusahaan Antrean Pesan, sehingga paling banyak akan ada satu pesan dalam antrean yang cocok dengan parameter yang diberikan id .

Dua metode lain memungkinkan Anda menerima pesan dari antrean. Metode mengembalikan Receive pesan pertama dalam antrean, dan ReceiveByCorrelationId(String) metode digunakan untuk mengambil pesan respons pengakuan, laporan, atau yang dihasilkan aplikasi yang dibuat sebagai akibat dari pesan yang dikirim ke antrean.

Untuk membaca pesan dengan pengidentifikasi tertentu tanpa menghapusnya dari antrean, gunakan PeekById(String) metode . Metode PeekById(String) selalu mengembalikan pesan pertama dalam antrean, sehingga panggilan berikutnya ke metode mengembalikan pesan yang sama kecuali pesan prioritas yang lebih tinggi tiba dalam antrean.

Tabel berikut menunjukkan 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

ReceiveById(String, MessageQueueTransaction)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan (dari antrean transaksi) dan segera menimbulkan pengecualian jika tidak ada pesan dengan pengidentifikasi yang ditentukan yang saat ini ada dalam antrean.

public:
 System::Messaging::Message ^ ReceiveById(System::String ^ id, System::Messaging::MessageQueueTransaction ^ transaction);
public System.Messaging.Message ReceiveById (string id, System.Messaging.MessageQueueTransaction transaction);
member this.ReceiveById : string * System.Messaging.MessageQueueTransaction -> System.Messaging.Message
Public Function ReceiveById (id As String, transaction As MessageQueueTransaction) As Message

Parameter

id
String

Pesan Id yang akan diterima.

Mengembalikan

Properti Message yang Id cocok dengan parameter yang id diteruskan.

Pengecualian

Parameternya id adalah null.

-atau-

Parameternya transaction adalah null.

Pesan dengan yang ditentukan id tidak dapat ditemukan.

Antrean tidak transaksi.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut menunjukkan penggunaan ReceiveById(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");

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

// Get the message's Id property value.
String^ id = msg->Id;

// Simulate doing other work so the message has time to arrive.
System::Threading::Thread::Sleep(TimeSpan::FromSeconds(10.0));

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

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

    // Receive the message from the queue.
    msg = queue->ReceiveById(id, 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");

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

// Get the message's Id property value.
string id = msg.Id;

// Simulate doing other work so the message has time to arrive.
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10.0));

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

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

    // Receive the message from the queue.
    msg = queue.ReceiveById(id, 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 metode ini untuk membaca pesan dengan pengidentifikasi yang diketahui dan menghapusnya dari antrean, menggunakan konteks transaksi internal yang transaction ditentukan oleh parameter . Metode ini segera melemparkan pengecualian jika pesan tidak ada dalam antrean

Properti Id pesan unik di seluruh perusahaan Antrean Pesan, sehingga paling banyak akan ada satu pesan dalam antrean yang cocok dengan parameter yang diberikan id .

Karena metode ini dipanggil pada antrean transaksional, pesan yang diterima akan dikembalikan ke antrean jika transaksi dibatalkan. Pesan tidak dihapus secara permanen dari antrean hingga transaksi dilakukan.

Dua metode lain memungkinkan Anda menerima pesan dari antrean. Metode mengembalikan Receive pesan pertama dalam antrean, dan ReceiveByCorrelationId(String) metode digunakan untuk mengambil pesan respons pengakuan, laporan, atau yang dihasilkan aplikasi yang dibuat sebagai akibat dari pesan yang dikirim ke antrean.

Untuk membaca pesan dengan pengidentifikasi tertentu tanpa menghapusnya dari antrean, gunakan PeekById(String) metode . Metode PeekById(String) selalu mengembalikan pesan pertama dalam antrean, sehingga panggilan berikutnya ke metode mengembalikan pesan yang sama kecuali pesan prioritas yang lebih tinggi tiba dalam antrean. Tidak ada konteks transaksi yang terkait dengan pesan yang dikembalikan oleh panggilan ke PeekById(String). Karena PeekById(String) tidak menghapus pesan apa pun dalam antrean, tidak akan ada yang perlu digulung balik jika transaksi dibatalkan.

Tabel berikut menunjukkan 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

ReceiveById(String, MessageQueueTransactionType)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan dan segera menimbulkan pengecualian jika tidak ada pesan dengan pengidentifikasi yang ditentukan yang saat ini ada dalam antrean.

public:
 System::Messaging::Message ^ ReceiveById(System::String ^ id, System::Messaging::MessageQueueTransactionType transactionType);
public System.Messaging.Message ReceiveById (string id, System.Messaging.MessageQueueTransactionType transactionType);
member this.ReceiveById : string * System.Messaging.MessageQueueTransactionType -> System.Messaging.Message
Public Function ReceiveById (id As String, transactionType As MessageQueueTransactionType) As Message

Parameter

id
String

Pesan Id yang akan diterima.

transactionType
MessageQueueTransactionType

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

Mengembalikan

Properti Message yang Id cocok dengan parameter yang id diteruskan.

Pengecualian

Parameternya id adalah null.

Pesan dengan yang ditentukan id tidak dapat ditemukan.

Parameter transactionType bukan salah MessageQueueTransactionType satu anggota.

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut menunjukkan penggunaan ReceiveById(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);

// Get the message's Id property value.
String^ id = msg->Id;

// Simulate doing other work so the message has time to arrive.
System::Threading::Thread::Sleep(TimeSpan::FromSeconds(10.0));

// Receive the message from the queue.
msg = queue->ReceiveById(id, 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);

// Get the message's Id property value.
string id = msg.Id;

// Simulate doing other work so the message has time to arrive.
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10.0));

// Receive the message from the queue.
msg = queue.ReceiveById(id, MessageQueueTransactionType.Single);

Keterangan

Gunakan metode ini untuk membaca pesan dengan pengidentifikasi yang diketahui dan menghapusnya dari antrean. Metode ini segera melemparkan pengecualian jika pesan tidak ada dalam antrean. Jika tidak, pesan dihapus dari antrean dan dikembalikan ke aplikasi 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 menerima pesan. Tentukan Single apakah Anda ingin menerima pesan sebagai satu transaksi internal. Anda dapat menentukan None apakah Anda ingin menerima pesan dari antrean transaksi di luar konteks transaksi.

Properti Id pesan unik di seluruh perusahaan Antrean Pesan, sehingga paling banyak akan ada satu pesan dalam antrean yang cocok dengan parameter yang diberikan id . Jika pesan dengan pengidentifikasi yang ditentukan berada dalam antrean selain yang terkait dengan instans ini MessageQueue , pesan tidak akan ditemukan.

Jika metode ini dipanggil untuk menerima pesan dari antrean transaksi, pesan yang diterima akan dikembalikan ke antrean jika transaksi dibatalkan. Pesan tidak dihapus secara permanen dari antrean hingga transaksi dilakukan.

Dua metode lain memungkinkan Anda menerima pesan dari antrean. Metode mengembalikan Receive pesan pertama dalam antrean, dan ReceiveByCorrelationId(String) metode digunakan untuk mengambil pesan respons pengakuan, laporan, atau yang dihasilkan aplikasi yang dibuat sebagai akibat dari pesan yang dikirim ke antrean.

Untuk membaca pesan dengan pengidentifikasi tertentu tanpa menghapusnya dari antrean, gunakan PeekById(String) metode . Metode PeekById(String) selalu mengembalikan pesan pertama dalam antrean, sehingga panggilan berikutnya ke metode mengembalikan pesan yang sama kecuali pesan prioritas yang lebih tinggi tiba dalam antrean. Tidak ada konteks transaksi yang terkait dengan pesan yang dikembalikan oleh panggilan ke PeekById(String). Karena PeekById(String) tidak menghapus pesan apa pun dalam antrean, tidak akan ada yang perlu digulung balik jika transaksi dibatalkan.

Tabel berikut menunjukkan 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

ReceiveById(String, TimeSpan)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan (dari antrean non-transaksi) dan menunggu hingga pesan dengan pengidentifikasi yang ditentukan tersedia dalam antrean atau waktu habis kedaluwarsa.

public:
 System::Messaging::Message ^ ReceiveById(System::String ^ id, TimeSpan timeout);
public System.Messaging.Message ReceiveById (string id, TimeSpan timeout);
member this.ReceiveById : string * TimeSpan -> System.Messaging.Message
Public Function ReceiveById (id As String, timeout As TimeSpan) As Message

Parameter

id
String

Dari Id pesan yang akan diterima.

timeout
TimeSpan

TimeSpan yang menunjukkan waktu untuk menunggu hingga pesan baru tersedia untuk diperiksa.

Mengembalikan

Properti Message yang Id cocok dengan parameter yang id diteruskan.

Pengecualian

Parameternya id adalah null.

Nilai yang ditentukan untuk timeout parameter tidak valid, mungkin timeout kurang dari Zero atau lebih besar dari InfiniteTimeout.

Pesan dengan yang ditentukan id tidak tiba dalam antrean sebelum waktu habis kedaluwarsa.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut menunjukkan penggunaan ReceiveById(String, TimeSpan).


// 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");

// Get the message's Id property value.
String^ id = msg->Id;

// Receive the message from the queue.
msg = queue->ReceiveById(id, TimeSpan::FromSeconds(10.0));

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");

// Get the message's Id property value.
string id = msg.Id;

// Receive the message from the queue.
msg = queue.ReceiveById(id, TimeSpan.FromSeconds(10.0));

Keterangan

Gunakan metode ini untuk membaca pesan dengan pengidentifikasi yang diketahui dan menghapusnya dari antrean. Metode ini segera kembali jika pesan dengan pengidentifikasi yang ditentukan oleh id parameter berada dalam antrean. Jika tidak, metode menunggu periode waktu yang diberikan untuk pesan baru tiba. Jika pesan baru tidak tiba sebelum waktu habis berakhir, pengecualian akan dilemparkan.

Parameter timeout tidak menentukan total waktu berjalan untuk metode ini. Sebaliknya, ini menentukan waktu untuk menunggu pesan baru tiba dalam antrean. Setiap kali pesan baru tiba, metode ini memeriksa Id dari pesan baru untuk melihat apakah pesan tersebut cocok dengan id parameter . Jika tidak, metode ini memulai periode waktu habis dan menunggu pesan baru lain tiba. Oleh karena itu, jika pesan baru terus tiba dalam periode waktu habis, dimungkinkan bagi metode ini untuk terus berjalan tanpa batas waktu, baik sampai periode waktu habis berakhir tanpa pesan baru yang tiba, atau sampai pesan tiba yang Id cocok dengan id parameter.

Properti Id pesan unik di seluruh perusahaan Antrean Pesan, sehingga paling banyak akan ada satu pesan dalam antrean yang cocok dengan parameter yang diberikan id .

Gunakan kelebihan beban ReceiveById(String) ini ketika dapat diterima agar utas saat ini diblokir selama pesan baru terus tiba dalam antrean dalam periode waktu habis yang ditentukan oleh timeout parameter . Utas akan diblokir setidaknya untuk jangka waktu tertentu, atau tanpa batas waktu jika Anda menentukan nilai InfiniteTimeout untuk timeout parameter, atau jika pesan baru terus tiba dalam antrean dalam periode waktu habis yang ditentukan oleh timeout parameter .

Dua metode lain memungkinkan Anda menerima pesan dari antrean. Metode mengembalikan Receive pesan pertama dalam antrean, dan ReceiveByCorrelationId(String) metode digunakan untuk mengambil pesan respons pengakuan, laporan, atau yang dihasilkan aplikasi yang dibuat sebagai akibat dari pesan yang dikirim ke antrean.

Untuk membaca pesan dengan pengidentifikasi tertentu tanpa menghapusnya dari antrean, gunakan PeekById(String) metode . Metode PeekById(String) ini selalu mengembalikan pesan pertama dalam antrean, sehingga panggilan berikutnya ke metode mengembalikan pesan yang sama kecuali pesan prioritas yang lebih tinggi tiba dalam antrean.

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

ReceiveById(String, TimeSpan, MessageQueueTransaction)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan (dari antrean transaksi) dan menunggu hingga pesan dengan pengidentifikasi yang ditentukan tersedia dalam antrean atau waktu habis kedaluwarsa.

public:
 System::Messaging::Message ^ ReceiveById(System::String ^ id, TimeSpan timeout, System::Messaging::MessageQueueTransaction ^ transaction);
public System.Messaging.Message ReceiveById (string id, TimeSpan timeout, System.Messaging.MessageQueueTransaction transaction);
member this.ReceiveById : string * TimeSpan * System.Messaging.MessageQueueTransaction -> System.Messaging.Message
Public Function ReceiveById (id As String, timeout As TimeSpan, transaction As MessageQueueTransaction) As Message

Parameter

id
String

Dari Id pesan yang akan diterima.

timeout
TimeSpan

TimeSpan yang menunjukkan waktu untuk menunggu hingga pesan baru tersedia untuk diperiksa.

Mengembalikan

Properti Message yang Id cocok dengan parameter yang id diteruskan.

Pengecualian

Parameternya id adalah null.

-atau-

Parameternya transaction adalah null.

Nilai yang ditentukan untuk timeout parameter tidak valid, mungkin timeout kurang dari Zero atau lebih besar dari InfiniteTimeout.

Pesan dengan yang ditentukan id tidak tiba dalam antrean sebelum waktu habis kedaluwarsa.

-atau-

Antrean bersifat non-transaksi.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Contoh

Contoh kode berikut menunjukkan penggunaan ReceiveById(String, TimeSpan, 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");

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

// Get the message's Id property value.
String^ id = msg->Id;

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

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

    // Receive the message from the queue.
    msg = queue->ReceiveById(id, TimeSpan::FromSeconds(10.0),
        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");

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

// Get the message's Id property value.
string id = msg.Id;

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

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

    // Receive the message from the queue.
    msg = queue.ReceiveById(id, TimeSpan.FromSeconds(10.0),
        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 metode ini untuk membaca pesan dengan pengidentifikasi yang diketahui dan menghapusnya dari antrean, menggunakan konteks transaksi internal yang transaction ditentukan oleh parameter . Metode ini segera kembali jika pesan dengan pengidentifikasi yang ditentukan oleh id parameter berada dalam antrean. Jika tidak, metode menunggu periode waktu yang diberikan untuk pesan baru tiba. Jika pesan baru tidak tiba sebelum waktu habis berakhir, pengecualian akan dilemparkan.

Parameter timeout tidak menentukan total waktu berjalan untuk metode ini. Sebaliknya, ini menentukan waktu untuk menunggu pesan baru tiba dalam antrean. Setiap kali pesan baru tiba, metode ini memeriksa Id dari pesan baru untuk melihat apakah pesan tersebut cocok dengan id parameter . Jika tidak, metode ini memulai periode waktu habis dan menunggu pesan baru lain tiba. Oleh karena itu, jika pesan baru terus tiba dalam periode waktu habis, dimungkinkan bagi metode ini untuk terus berjalan tanpa batas waktu, baik sampai periode waktu habis berakhir tanpa pesan baru yang tiba, atau sampai pesan tiba yang Id cocok dengan id parameter.

Properti Id pesan unik di seluruh perusahaan Antrean Pesan, sehingga paling banyak akan ada satu pesan dalam antrean yang cocok dengan parameter yang diberikan id .

Gunakan kelebihan beban ReceiveById(String) ini ketika dapat diterima agar utas saat ini diblokir selama pesan baru terus tiba dalam antrean dalam periode waktu habis yang ditentukan oleh timeout parameter . Utas akan diblokir setidaknya untuk jangka waktu tertentu, atau tanpa batas waktu jika Anda menentukan nilai InfiniteTimeout untuk timeout parameter, atau jika pesan baru terus tiba dalam antrean dalam periode batas waktu yang ditentukan oleh timeout parameter .

Karena metode ini dipanggil pada antrean transaksional, pesan yang diterima akan dikembalikan ke antrean jika transaksi dibatalkan. Pesan tidak dihapus secara permanen dari antrean hingga transaksi dilakukan.

Dua metode lain memungkinkan Anda menerima pesan dari antrean. Metode mengembalikan Receive pesan pertama dalam antrean, dan ReceiveByCorrelationId(String) metode digunakan untuk mengambil pesan respons pengakuan, laporan, atau yang dihasilkan aplikasi yang dibuat sebagai akibat dari pesan yang dikirim ke antrean.

Untuk membaca pesan dengan pengidentifikasi tertentu tanpa menghapusnya dari antrean, gunakan PeekById(String) metode . Metode PeekById(String) selalu mengembalikan pesan pertama dalam antrean, sehingga panggilan berikutnya ke metode mengembalikan pesan yang sama, kecuali pesan prioritas yang lebih tinggi tiba dalam antrean. Tidak ada konteks transaksi yang terkait dengan pesan yang dikembalikan oleh panggilan ke PeekById(String). Karena PeekById(String) tidak menghapus pesan apa pun dalam antrean, tidak akan ada yang perlu digulung balik jika transaksi dibatalkan.

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

ReceiveById(String, TimeSpan, MessageQueueTransactionType)

Menerima pesan yang cocok dengan pengidentifikasi yang diberikan dan menunggu hingga pesan dengan pengidentifikasi yang ditentukan tersedia dalam antrean atau waktu habis kedaluwarsa.

public:
 System::Messaging::Message ^ ReceiveById(System::String ^ id, TimeSpan timeout, System::Messaging::MessageQueueTransactionType transactionType);
public System.Messaging.Message ReceiveById (string id, TimeSpan timeout, System.Messaging.MessageQueueTransactionType transactionType);
member this.ReceiveById : string * TimeSpan * System.Messaging.MessageQueueTransactionType -> System.Messaging.Message
Public Function ReceiveById (id As String, timeout As TimeSpan, transactionType As MessageQueueTransactionType) As Message

Parameter

id
String

Dari Id pesan yang akan diterima.

timeout
TimeSpan

TimeSpan yang menunjukkan waktu untuk menunggu hingga pesan baru tersedia untuk diperiksa.

transactionType
MessageQueueTransactionType

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

Mengembalikan

Properti Message yang Id cocok dengan parameter yang id diteruskan.

Pengecualian

Parameternya id adalah null.

Nilai yang ditentukan untuk timeout parameter tidak valid, mungkin timeout kurang dari Zero atau lebih besar dari InfiniteTimeout.

Pesan dengan yang ditentukan id tidak tiba dalam antrean sebelum waktu habis kedaluwarsa.

-atau-

Terjadi kesalahan saat mengakses metode Antrean Pesan.

Parameter transactionType bukan salah MessageQueueTransactionType satu anggota.

Contoh

Contoh kode berikut menunjukkan penggunaan ReceiveById(String, TimeSpan, 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);

// Get the message's Id property value.
String^ id = msg->Id;

// Receive the message from the queue.
msg = queue->ReceiveById(id, TimeSpan::FromSeconds(10.0),
    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);

// Get the message's Id property value.
string id = msg.Id;

// Receive the message from the queue.
msg = queue.ReceiveById(id, TimeSpan.FromSeconds(10.0),
    MessageQueueTransactionType.Single);

Keterangan

Gunakan metode ini untuk membaca pesan dengan pengidentifikasi yang diketahui dan menghapusnya dari antrean. Metode ini segera kembali jika pesan dengan pengidentifikasi yang ditentukan oleh id parameter berada dalam antrean, menggunakan konteks transaksi yang ditentukan oleh transactionType parameter . Jika tidak, metode menunggu periode waktu yang diberikan untuk pesan baru tiba. Jika pesan baru tidak tiba sebelum waktu habis berakhir, pengecualian akan dilemparkan.

Parameter timeout tidak menentukan total waktu berjalan untuk metode ini. Sebaliknya, ini menentukan waktu untuk menunggu pesan baru tiba dalam antrean. Setiap kali pesan baru tiba, metode ini memeriksa Id dari pesan baru untuk melihat apakah pesan tersebut cocok dengan id parameter . Jika tidak, metode ini memulai periode waktu habis dan menunggu pesan baru lain tiba. Oleh karena itu, jika pesan baru terus tiba dalam periode waktu habis, dimungkinkan bagi metode ini untuk terus berjalan tanpa batas waktu, baik sampai periode waktu habis berakhir tanpa pesan baru yang tiba, atau sampai pesan tiba yang Id cocok dengan id parameter.

Tentukan Automatic untuk transactionType parameter jika sudah ada konteks transaksi eksternal yang dilampirkan ke utas yang ingin Anda gunakan untuk menerima pesan. Tentukan Single apakah Anda ingin menerima pesan sebagai satu transaksi internal. Anda dapat menentukan None apakah Anda ingin menerima pesan dari antrean transaksi di luar konteks transaksi.

Properti Id pesan unik di seluruh perusahaan Antrean Pesan, sehingga paling banyak akan ada satu pesan dalam antrean yang cocok dengan parameter yang diberikan id . Jika pesan dengan pengidentifikasi yang ditentukan berada dalam antrean selain yang terkait dengan instans ini MessageQueue , pesan tidak akan ditemukan.

Gunakan kelebihan beban ReceiveById(String) ini ketika dapat diterima agar utas saat ini diblokir selama pesan baru terus tiba dalam antrean dalam periode waktu habis yang ditentukan oleh timeout parameter . Utas akan diblokir setidaknya untuk jangka waktu tertentu, atau tanpa batas waktu jika Anda menentukan nilai InfiniteTimeout untuk timeout parameter, atau jika pesan baru terus tiba dalam antrean dalam periode waktu habis yang ditentukan oleh timeout parameter .

Jika metode ini dipanggil untuk menerima pesan dari antrean transaksi, pesan yang diterima akan dikembalikan ke antrean jika transaksi dibatalkan. Pesan tidak dihapus secara permanen dari antrean hingga transaksi dilakukan.

Dua metode lain memungkinkan Anda menerima pesan dari antrean. Metode mengembalikan Receive pesan pertama dalam antrean, dan ReceiveByCorrelationId(String) metode digunakan untuk mengambil pesan respons pengakuan, laporan, atau yang dihasilkan aplikasi yang dibuat sebagai akibat dari pesan yang dikirim ke antrean.

Untuk membaca pesan dengan pengidentifikasi tertentu tanpa menghapusnya dari antrean, gunakan PeekById(String) metode . Metode PeekById(String) ini selalu mengembalikan pesan pertama dalam antrean, sehingga panggilan berikutnya ke metode mengembalikan pesan yang sama kecuali pesan prioritas yang lebih tinggi tiba dalam antrean. Tidak ada konteks transaksi yang terkait dengan pesan yang dikembalikan oleh panggilan ke PeekById(String). Karena PeekById(String) tidak menghapus pesan apa pun dalam antrean, tidak akan ada yang perlu digulung balik jika transaksi dibatalkan.

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