2016-04-18 15 views

Antwort

1

Ja - und nein :)

Zunächst einmal, ich möchte nur sagen, dass es am besten ist, dass Sie alles in Ihrer Macht tun, um Ihr System in ein Design So wird es tolerant gegenüber neu angeordneten Nachrichten. Sie werden viel glücklicher in der Zukunft sein, wenn Ihr System in der Lage ist, in einem konsistenten Zustand zu enden, obwohl eine oder mehrere Nachrichten für eine Weile auf dem Weg in einer Fehlerwarteschlange geparkt waren.

Und wenn ich sage "tolerant to reordered message", meine ich nicht unbedingt "alle Nachrichten in völlig zufälliger Reihenfolge" ... eher wie "leicht nachbestellt" und/oder "einige von ihnen müssen drin sein Ordnung, kann aber viele von ihnen nachbestellen ". Im Rahmen des Zumutbaren.

Es klingt für mich wie Ihre Anforderung ist sehr streng - und die einzige Möglichkeit, das zu erreichen, ist ein einziger Thread (mit einer Parallelität von 1) Verarbeitung von Nachrichten, verwerfen (oder auf der Rückseite der Warteschlange, wenn die Nachrichten sind wichtig) Nachrichten, die nicht als nächste erwartet wurden.

Wenn das Verschieben von Nachrichten in den hinteren Bereich der Warteschlange zu grob ist (es kann langsam werden, wenn Sie viele Nachrichten haben oder wenn sie oft nicht ordnungsgemäß ankommen), können Sie eine Nachricht verwenden, um Nachrichten in Warteschlange zu stellen richtige Nachricht, und zu diesem Zeitpunkt können Sie tun, was Sie tun müssen.

Ich hoffe, das macht Sinn :) bitte lassen Sie mich wissen, wenn etwas nicht klar ist.

+0

@ Mooid8000: Dies würde nicht funktionieren, wenn ich meine Handler auf mehreren Maschinen laufen. Richtig? – Chandu

+0

richtig - Sie benötigen eine Art verteilter Serialisierungsmechanismus, damit das funktioniert ... aber im Allgemeinen ist es am besten, Warteschlangen für Arbeiten zu verwenden, die gleichzeitig verteilt und verarbeitet werden können, möglicherweise parallel auf mehreren Maschinen, und daher am besten funktioniert Die Arbeit, die zur Verarbeitung jeder Nachricht erforderlich ist, ist ziemlich unabhängig und konkurriert nicht um die gleichen Ressourcen – mookid8000

Verwandte Themen