È possibile garantire la consegna ordinata quando si utilizza WCF netMSMQbinding?Ordine di consegna con netMSMQbinding
Stiamo inserendo un comando di inserimento seguito da una serie di comandi di aggiornamento nella stessa coda, e occasionalmente uno degli aggiornamenti batte l'inserto.
Dopo aver aggiunto una registrazione estesa, è chiaro che vengono aggiunti alla coda nell'ordine corretto e vengono elaborati in un ordine diverso.
Sono riuscito a Google un paio di articoli che affermano che questo comportamento è previsto, ma sembra che sia possibile configurarlo in modo da essere ordinato in qualche modo.
nostre code sono transazionale, quindi non credo che l'aggiunta di numeri di sequenza e risequenziamento a destinazione è andare a lavorare, come che perderà transactionality
Se posso aggiungere l'attributo [DeliveryRequirements(RequireOrderedDelivery=true, QueuedDeliveryRequirements=QueuedDeliveryRequirementsMode.Require)]
ottengo il seguente errore :
The DeliveryRequirementsAttribute on contract 'IService' specifies a QueuedDeliveryRequirements value of NotAllowed. However, the configured binding for this contract specifies that it does support queued delivery. A queued binding may not be used with this contract.
non ho idea del motivo per cui si ottiene questo errore, "appare" come tutto sia installato correttamente. Non sono riuscito a trovare alcuna conferma che questa impostazione sia consentita per MSMQ, poiché sembra essere un'impostazione WS-RM e AMSIK netMSMQBinding non supporta WS-RM.
Ho presentato un bug di connessione su questo argomento, non è esattamente lo stesso problema come si doveva, ma abbastanza vicino ... Ho anche una soluzione nel bug di connessione. Controlla qui: https://connect.microsoft.com/VisualStudio/feedback/details/1107645/wcf-receives-messages-from-msmq-out-of-order –