MessageQueue.ReceiveById Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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
- transaction
- MessageQueueTransaction
Objek MessageQueueTransaction.
Mengembalikan
Properti Message yang Id cocok dengan parameter yang id
diteruskan.
Pengecualian
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
- 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
- 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
- timeout
- TimeSpan
TimeSpan yang menunjukkan waktu untuk menunggu hingga pesan baru tersedia untuk diperiksa.
- transaction
- MessageQueueTransaction
Objek MessageQueueTransaction.
Mengembalikan
Properti Message yang Id cocok dengan parameter yang id
diteruskan.
Pengecualian
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
- 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 |