Udostępnij za pośrednictwem


MessageQueue.PeekById Metoda

Definicja

Zwraca kopię komunikatu z określonym identyfikatorem komunikatu bez usuwania komunikatu z kolejki.

Przeciążenia

PeekById(String)

Wyświetla komunikat, którego identyfikator komunikatu jest zgodny z parametrem id.

PeekById(String, TimeSpan)

Wyświetla komunikat, którego identyfikator komunikatu jest zgodny z parametrem id. Czeka na wyświetlenie komunikatu w kolejce lub przekroczenie limitu czasu.

PeekById(String)

Wyświetla komunikat, którego identyfikator komunikatu jest zgodny z parametrem id.

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

Parametry

id
String

Id wiadomości, aby zajrzeć.

Zwraca

Właściwość Message, której właściwość Id jest zgodna z parametrem id.

Wyjątki

Parametr id jest null.

Nie istnieje komunikat z określonym id.

Wystąpił błąd podczas uzyskiwania dostępu do metody kolejkowania komunikatów.

Przykłady

W poniższym przykładzie kodu pokazano użycie PeekById(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));

// Peek at the message.
msg = queue->PeekById(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));

// Peek at the message.
msg = queue.PeekById(id);

Uwagi

Użyj PeekById(String) do odczytu bez usuwania z kolejki komunikatu o znanym identyfikatorze komunikatu. Identyfikator komunikatu jest unikatowy w przedsiębiorstwie kolejkowania komunikatów, więc w kolejce będzie co najwyżej jeden komunikat zgodny z danym parametrem id. To przeciążenie zgłasza wyjątek, jeśli kolejka nie zawiera obecnie komunikatu.

Dwie dodatkowe metody umożliwiają wgląd w komunikaty w kolejce: Peek i PeekByCorrelationId(String). Metoda Peek zwraca pierwszy komunikat w kolejce; PeekByCorrelationId(String) zwraca komunikat potwierdzenia, raportu lub odpowiedzi wygenerowanej przez aplikację, który został utworzony w wyniku komunikatu wysłanego do kolejki.

W poniższej tabeli przedstawiono, czy ta metoda jest dostępna w różnych trybach grupy roboczej.

Tryb grupy roboczej Dostępny
Komputer lokalny Tak
Nazwa komputera lokalnego i bezpośredniego formatu Tak
Komputer zdalny Nie
Nazwa komputera zdalnego i bezpośredniego formatu Tak

Zobacz też

Dotyczy

PeekById(String, TimeSpan)

Wyświetla komunikat, którego identyfikator komunikatu jest zgodny z parametrem id. Czeka na wyświetlenie komunikatu w kolejce lub przekroczenie limitu czasu.

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

Parametry

id
String

Id wiadomości, aby zajrzeć.

timeout
TimeSpan

TimeSpan, który wskazuje czas oczekiwania na udostępnienie nowej wiadomości do inspekcji.

Zwraca

Właściwość Message, której właściwość Id jest zgodna z parametrem id.

Wyjątki

Parametr id jest null.

Wartość określona dla parametru timeout jest nieprawidłowa, prawdopodobnie timeout jest mniejsza niż Zero lub większa niż InfiniteTimeout.

Komunikat z określonym id nie istnieje w kolejce i nie dotarł przed upływem okresu określonego przez parametr timeout.

Wystąpił błąd podczas uzyskiwania dostępu do metody kolejkowania komunikatów.

Przykłady

W poniższym przykładzie kodu pokazano użycie PeekById(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;

// Peek at the message.
msg = queue->PeekById(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;

// Peek at the message.
msg = queue.PeekById(id, TimeSpan.FromSeconds(10.0));

Uwagi

Użyj PeekById(String) do odczytu bez usuwania z kolejki komunikatu o znanym identyfikatorze komunikatu. Identyfikator komunikatu jest unikatowy w przedsiębiorstwie kolejkowania komunikatów, więc w kolejce będzie co najwyżej jeden komunikat zgodny z danym parametrem id. To przeciążenie zgłasza wyjątek, jeśli kolejka nie zawiera obecnie komunikatu, a nowy komunikat nie zostanie wyświetlony przed przekroczeniem limitu czasu.

Parametr timeout nie określa łącznego czasu działania dla tej metody. Zamiast tego określa czas oczekiwania na nadejście nowego komunikatu do kolejki. Za każdym razem, gdy pojawia się nowy komunikat, ta metoda sprawdza Id nowego komunikatu, aby sprawdzić, czy jest zgodny z parametrem id. Jeśli tak nie jest, ta metoda rozpoczyna limit czasu i czeka na nadejście innego nowego komunikatu. W związku z tym, jeśli nowe komunikaty nadal docierają w okresie przekroczenia limitu czasu, jest możliwe, aby ta metoda kontynuowała działanie na czas nieokreślony, dopóki limit czasu nie wygaśnie bez nadejścia nowych komunikatów lub do momentu nadejścia komunikatu, którego Id pasuje do parametru id.

Dwie dodatkowe metody umożliwiają wgląd w komunikaty w kolejce: Peek i PeekByCorrelationId(String). Metoda Peek zwraca pierwszy komunikat w kolejce; PeekByCorrelationId(String) zwraca komunikat potwierdzenia, raportu lub odpowiedzi wygenerowanej przez aplikację, który został utworzony w wyniku komunikatu wysłanego do kolejki.

W poniższej tabeli przedstawiono, czy ta metoda jest dostępna w różnych trybach grupy roboczej.

Tryb grupy roboczej Dostępny
Komputer lokalny Tak
Nazwa komputera lokalnego i bezpośredniego formatu Tak
Komputer zdalny Nie
Nazwa komputera zdalnego i bezpośredniego formatu Tak

Zobacz też

Dotyczy