Domanda

NServiceBus fornisce un meccanismo di timeout. Da nservicebus.com :

  

Il metodo RequestTimeout sulla base   Classe dice NServiceBus per inviare un   messaggio a un altro punto finale che sarà   durevolmente tenere il tempo per noi ... C'è una   processo che viene fornito con NServiceBus   chiamato Timeout Gestore che   fornisce un'implementazione di base di   questa funzionalità.

     

Quando il tempo è scaduto, il Timeout manager   invia un messaggio di nuovo alla saga   causando il suo metodo Timeout essere   chiamato con lo stesso oggetto state   originariamente passato.

Come la vedo io c'è la possibilità che il timeout si attiva anche se il messaggio è stato consegnato al destinatario (la risposta ha ottenuto da qualche parte bloccato per esempio).

Come faccio a progettare la mia domanda in tal modo un che la mia applicazione si comporterà correttamente a prescindere se il messaggio ha fatto al destinatario oppure no.

È stato utile?

Soluzione

Se il client invia un messaggio al server e quindi richiede un timeout, lo stato della richiesta verrà memorizzato. Se il messaggio Timeout viene ricevuto dal Cliente prima della risposta dal server quindi è possibile confrontare lo stato restituito dal Timeout allo stato attuale e vedere che il server non ha risposto e decidere cosa fare. Se la richiesta non è più valida, si potrebbe ignorare la risposta. Se questo è il caso, si consiglia di guardare l'attributo "TimeToBeReceived" per il messaggio Server. Sarà buttare via messaggi che non può ricevere in tempo designato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top