2016-07-10 4 views
0

Wir haben eine Multi-Thread-Anwendung und möchten lineare Kanalgröße vermeiden, die auf simultanen Anfragen basiert, z. B. 30 parallele Anfragen, die von 30 offenen Kanälen bedient werden. Daher planten wir, denselben Kanal für das Schreiben mehrerer Nachrichten zu verwenden, indem wir verschiedene eingehende Kanalhandler zur Pipeline hinzufügen. In bestimmten Fällen wird jedoch die Antwortnachricht für einen Handler von einem anderen Handler gelesen, und es besteht ein Anforderungs-/Antwort-Konflikt. Gibt es einen besseren Weg, hohe Transaktionen/Sekunde (TPS) zu bewältigen, ohne tatsächlich so viele Kanäle zu erstellen, da es nicht praktisch aussieht (unsere TPS kann bis zu 100 gehen, so dass die Erstellung von 100 Kanälen teuer sein kann? !!).Schreiben simultaner Nachrichten an denselben Netty-Kanal mit verschiedenen InboundHandler-Problemen

Bitte schlagen Sie vor, wie wir Request/Response-Matching handhaben können?

Antwort

0

in unserer Firma wird jede Anfrage einen globalen langen Wert hinzufügen, da es eine eindeutige ID ist. und die Antwort gibt die gleiche eindeutige ID zurück, so dass Sie die Antwort für eine Anfrage wissen können. können Sie die eindeutige ID von AtomicLong-Klasse generieren.

+0

Sicher haben wir über diese Lösung nachgedacht. In diesem Fall würden wir jedoch das System mit der Antwort beauftragen, die übereinstimmende ID zurückzusenden. Wir dachten also, es gäbe eine andere bessere Möglichkeit, diesen Ansatz zu vermeiden. Wenn nichts klappt, müssen wir wahrscheinlich dasselbe tun. Danke für deinen Beitrag! –