Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo MessageQueue.PeekByCorrelationId (String, TimeSpan)

 

Data di pubblicazione: ottobre 2016

Legge il messaggio che corrisponde all'identificatore di correlazione specificato e attende che un messaggio con l'identificatore di correlazione specificato è disponibile nella coda o alla scadenza del timeout.

Spazio dei nomi:   System.Messaging
Assembly:  System.Messaging (in System.Messaging.dll)

public Message PeekByCorrelationId(
	string correlationId,
	TimeSpan timeout
)

Parametri

correlationId
Type: System.String

Il CorrelationId del messaggio da leggere.

timeout
Type: System.TimeSpan

Oggetto TimeSpan che indica il tempo di attesa fino a quando un messaggio nuovo è disponibile per l'ispezione.

Valore restituito

Type: System.Messaging.Message

Il Message cui CorrelationId corrisponde il correlationId passato nel parametro.

Exception Condition
ArgumentNullException

Il valore del parametro correlationId è null.

ArgumentException

Il valore specificato per il timeout parametro non valido, probabilmente timeout è minore di TimeSpan.Zero o maggiore di MessageQueue.InfiniteTimeout.

InvalidOperationException

Il messaggio con l'oggetto specificato correlationId non esiste nella coda e non è arrivato prima della scadenza del timeout.

MessageQueueException

Un messaggio non è arrivato prima della scadenza del timeout.

-oppure-

Si è verificato un errore quando si accede a un metodo di Accodamento messaggi.

Questo metodo cerca nella coda a cui fa riferimento il MessageQueue per un messaggio il cui CorrelationId corrisponde al valore specificato correlationId parametro. Se non viene trovato alcun messaggio corrispondente la correlationID parametro e nessun nuovo messaggio arriva nella coda entro il periodo specificato dal timeout parametro, viene generata un'eccezione.

Il timeout parametro specifica il totale tempo di esecuzione per questo metodo. Piuttosto, specifica il tempo di attesa per un nuovo messaggio in arrivo nella coda. Ogni volta che arriva un nuovo messaggio, questo metodo esamina la CorrelationId del nuovo messaggio per verificare se corrisponde il correlationId parametro. In caso contrario, questo metodo avvia nuovamente il periodo di timeout e attende l'arrivo di un nuovo messaggio. Pertanto, se i nuovi messaggi continuano ad arrivare entro il periodo di timeout, è possibile che questo metodo venga eseguito all'infinito, finché non scade il periodo di timeout senza che arrivino nuovi messaggi o fino a quando non arriva un messaggio la cui proprietà CorrelationId corrisponde il correlationId parametro.

Il CorrelationId proprietà viene utilizzata per collegare un messaggio inviato alla coda di messaggi di risposta, report o riconoscimento associati.

Altri due metodi consentono di leggere i messaggi in una coda. Il Peek metodo restituisce il primo messaggio della coda e PeekById(String) metodo viene utilizzato per recuperare un messaggio specificando il relativo identificatore univoco.

Nella tabella seguente indica se questo metodo è disponibile in diverse modalità gruppo di lavoro.

Modalità gruppo di lavoro

Disponibile

Computer locale

Computer locale e il nome di formato direct

Computer remoto

No

Computer remoto e il nome di formato direct

L'esempio di codice seguente illustra l'uso di PeekByCorrelationId(String, TimeSpan).


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

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

// Designate a queue to receive the acknowledgement message for this
// message.
msg.AdministrationQueue = new MessageQueue(".\\exampleAdminQueue");

// Set the message to generate an acknowledgement message upon its
// arrival.
msg.AcknowledgeType = AcknowledgeTypes.PositiveArrival;

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

// Connect to the admin queue.
MessageQueue adminQueue = new MessageQueue(".\\exampleAdminQueue");

// Set the admin queue's MessageReadPropertyFilter property to ensure
// that the acknowledgement message includes the desired properties.
adminQueue.MessageReadPropertyFilter.Acknowledgment = true;
adminQueue.MessageReadPropertyFilter.CorrelationId = true;

// Peek at the acknowledgement message.
Message ackMsg = adminQueue.PeekByCorrelationId(id,
    TimeSpan.FromSeconds(10.0));

// Display the acknowledgement message's property values.
Console.WriteLine("Message.Label: {0}", ackMsg.Label);
Console.WriteLine("Message.Acknowledgment: {0}", ackMsg.Acknowledgment);
Console.WriteLine("Message.CorrelationId: {0}", ackMsg.CorrelationId);

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: