Nach dem Belastungstest fand ich einige Pakete nicht sequentiell.MSMQ: Gewährleistet MSMQ sequenzielle Nachrichtenübergabe?
es ist eine grundlegende WCF-Dienst und Client sendet kontinuierlich die Anfrage.
Nach dem Belastungstest fand ich einige Pakete nicht sequentiell.MSMQ: Gewährleistet MSMQ sequenzielle Nachrichtenübergabe?
es ist eine grundlegende WCF-Dienst und Client sendet kontinuierlich die Anfrage.
Es ist möglich, eine garantierte (in Reihenfolge, genau einmal) Zustellung mit netMsmqBinding zu haben.
Das erste, was Sie tun müssen, ist Ihre tatsächlichen MSMQ-Nachrichtenwarteschlange Transaktion zu erstellen.
Zweitens müssen Sie WCF sagen in der Transaktion zu gewinnen, wie so:
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void Handle(Something msg)
{
....
}
Schließlich müssen Sie garantiert Verhalten des Dienstes angeben, indem Sie die ExactlyOnce Bindung Paramter mit:
<netMsmqBinding>
<binding name="netMsmqBinding_IMyServiceInterface"
exactlyOnce="true">
...
</binding>
</netMsmqBinding>
ExactlyOnce teilt WCF mit, dass wir Transaktionen benötigen, dass jede Nachricht genau einmal und in der Reihenfolge gesendet wird, in der sie gesendet wurden.
Danke für die Antwort, ich tat genau das gleiche, aber es hat keine Sequenz garantiert. – User
@User - konnten Sie Nachrichten in der falschen Reihenfolge ankommen lassen? Wie hast du das erreicht? Auch können Sie Ihre Service-Schnittstelle und Implementierung pls? –
@Benutzen Sie auch einen einzelnen Dienst, der mehr als einen Dienst ausführt oder skaliert? –
Vielleicht [dies] (https://blogs.msdn.microsoft.com/napegadie_kones_msft_blog/2015/02/07/wcf-processes-messages-from-msmq-out-of-order-using-netmsmbbinding/) ist Wonach suchen Sie. Aber ich denke [http://stackoverflow.com/questions/13802385/how-to-enforce-message-queue-sequence-with-multiple-wcf-services-instances] wäre eine nachhaltigere Lösung. – khlr
Bedeutet dies, dass die sequentielle Nachrichtenübermittlung nicht gewährleistet ist. – User
Je nach Konfiguration könnte ein Element in die Wiederholungswarteschlange gestellt werden. Ihre Nachrichtenreihenfolge wird dann standardmäßig geändert. Entwerfen Sie Ihre Lösung nicht in Abhängigkeit von der Nachrichtenreihenfolge. –