Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 13505|Antwort: 2

Persistent-Abonnement-Einstellungen von ActiveMQ

[Link kopieren]
Veröffentlicht am 09.01.2017 11:12:10 | | |

Persistent-Abonnement-Einstellungen von ActiveMQ
Indem Sie den PERSISTENT-Liefermodus für den Publisher einstellen, können Sie persistente Abonnements für Abonnenten verwenden, was garantiert, dass das Pub/Sub-Programm alle veröffentlichten Nachrichten empfängt.
Nachrichtenabonnements werden in nicht-dauerhafte und dauerhafte Abonnements unterteilt, und nicht-dauerhafte Abonnements können nur Nachrichten empfangen, die an ein Thema gesendet werden, wenn der Client aktiv ist, also wenn der Client offline ist; Nachrichten, die während dieses Zeitraums an das Thema gesendet werden, gehen verloren und werden nie empfangen. Wenn der Client offline ist, speichert ActiveMQ alle an das Subjekt gesendete Nachrichten entsprechend seiner ID, und wenn der Client sich erneut mit ActiveMQ verbindet, erhält er alle Nachrichten, die an das Subjekt gesendet wurden, wenn es offline ist. Persistente Abonnements erhöhen den Overhead und haben jeweils nur einen aktiven Nutzer in einem persistenten Abonnement. Schritte zur Einrichtung eines persistenten Abonnements:
1. Eine Kunden-ID für die Verbindung einrichten;
2. Geben Sie für das Thema des Abonnements einen Abonnementnamen an;
Die obige Kombination muss eindeutig sein.
Code implementiert persistente Abonnements

(1) Beim Einsatz von Warteschlange, also beim Warteschlangen, gibt es nur einen Konsumenten pro Nachricht, daher ist die Persistenz sehr einfach, einfach in der Datenbank speichern

。 Dann kann jeder Verbraucher es aufnehmen und entsorgen. Es spielt keine Rolle, ob ein Verbraucher es für eine Weile ausschaltet.

(2) Bei der Verwendung von Topic, also beim Abonnement, kann jede Nachricht mehrere Konsumenten haben, was umständlicher ist.

Erstens, unter der Annahme, dass Verbraucher gewöhnliche Verbraucher sind,
------------------------
Nach dem Start von <1> activemq wurde News 1 veröffentlicht, aber leider starten derzeit keine Verbraucher, das heißt, keine Kunden haben ein Abonnement abgeschlossen. Also

Die Nachricht wurde verworfen.

<2> Consumer 1 startete, verband sich mit activemq, abonnierte und wartete auf eine Nachricht~~

activemq postet Nachricht 2, OK, Konsument 1 empfängt und verarbeitet sie. Nachricht verlassen.

<3> Consumer 2 ist ebenfalls gestartet, mit activemq verbunden, abonniert und wartet auf eine Nachricht~~

activemq veröffentlicht Nachricht 3, OK, Verbraucher 1, Verbraucher 2 werden alle empfangen und verarbeitet. Nachricht verlassen.

<4> Consumer 1 ist ausgeschaltet.

activemq postet Nachricht 4, OK, Konsument 2 empfängt sie und verarbeitet sie. Nachricht verlassen.

<5> Consumer 1 startete erneut.

activemq veröffentlicht Nachrichten 5, OK, Konsument 1 und Konsument 2 empfangen und verarbeiten sie alle. Nachricht verlassen.
-----------------------------
Zusammenfassend:
ActiveMQ sendet einfach Nachrichten an den aktuell gestarteten Verbraucher.
Verbraucher, die abschalten, verpassen viele Nachrichten und können sie nicht mehr empfangen.

Wenn die gesendete Nachricht wichtige Benutzersynchronisationsdaten sind und sie verpassen, werden die Benutzerdaten nicht synchronisiert.

Wie bringt man also Verbraucher dazu, verpasste Nachrichten zu erhalten, wenn sie neu starten?

Die Antwort ist ein dauerhaftes Abo.
-----------------------------

Normale Abonnements, ohne zwischen den Verbrauchern zu unterscheiden, werfen bei einigen Köpfen im Veranstaltungsort ein paar gedämpfte Brötchen.
Für dauerhafte Abonnements müssen Sie den Namen des Kunden notieren.
Zhang San sagte: Ich bin Zhang San, es gibt gedämpfte Brötchen für mich, ich komme zurück, um sie zu holen.
Li Si sagte: Ich bin Li Si, es gibt gedämpfte Brötchen für mich, ich komme zurück, um sie zu holen.
activemq schrieb die Namen von Zhang San und Li Si auf.

Dann gibt beim Teilen der gedämpften Brötchen ein Kopf noch ein gedämpftes Brötchen hervor.
Nach der Teilung, als er sah, dass Zhang San nicht sprach, bedeutete das, dass er nicht da war, also lass ihn eine.
Li Si sprach, also gab es keinen Grund zu bleiben.

Zhang San kam zurück, suchte nach activemq und schaute nach, das ist nicht Zhang San, bring schnell seine gedämpften Brötchen mit.
Es kann ein gedämpftes Brötchen sein oder 100 gedämpfte Brötchen – es kommt darauf an, wie viele gedämpfte Brötchen Zhang San seit seiner Abreise geteilt hat.

activemq unterscheidet Konsumenten anhand von ClientID und Abonnentennamen.
-----------------------------
Stellen Sie eine Verbindung her
connection = connectionFactory.createConnection();
connection.setClientID("bbb"); Persistente Abonnements erfordern diese Einstellung.
connection.start();

Eine Sitzung erstellen
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

Erstelle ein Ziel
Thema = session.createTopic("userSyncTopic"); Themenname

MessageConsumer Consumer = session.createConsumer(topic); Reguläres Abonnement
MessageConsumer-Nutzer = session.createDurableSubscriber(topic,"bbb"); Persistente Abonnements


Ein weiterer Punkt ist, dass der Erzeuger der Nachricht beim Senden von Nachrichten den persistenten Modus verwendet
MessageProducer Produzent = ...;
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Wenn nicht, ist es standardmäßig persistent

(5) Wenn dieselbe "ClientID" verwendet wird, gilt sie als derselbe Konsument. Wenn zwei Programme dieselbe "ClientID" verwenden, kann nur eines gleichzeitig mit activemq verbunden werden, und die zweite Verbindung meldet einen Fehler.

(6) Die Einstellungen von activemq sind in conf/activemq.xml, und die Standardnachrichten werden in data/kahadb gespeichert, und die Nachrichten gehen beim Neustart von activemq nicht verloren.

Sie können auf http://localhost:8161/admin/index.jsp zugreifen: Informationen zu aktuellen Warteschlangen, Themen und dauerhaften Abonnenten anzeigen, Nachrichten senden und mehr.

Man kann den Inhalt im activemq-jdbc.xml kopieren und verändern, und die Nachricht in anderen Datenbanken speichern.




Vorhergehend:360-Ticket-Erschnappen des VIP-Kanals der fünften Generation ist geknackt, schnell in die VIP-Schlange einsteigen
Nächster:. .Net-Plattform
 Vermieter| Veröffentlicht am 09.01.2017 13:41:53 |
1 Vergleich der technischen Eigenschaften von Warteschlange und Thema
Name
Thema
Warteschlange
Überblick
Veröffentlichen Abonnieren Nachrichten Veröffentlichen Abonnementnachrichten
Punkt-zu-Punkt Punkt-zu-Punkt
Es gibt keinen Staat
Topic-Daten sind standardmäßig zustandslos.
Warteschlangendaten werden standardmäßig als Datei auf dem MQ-Server gespeichert, zum Beispiel wird Active MQ üblicherweise unter $AMQ_HOME\data\kr-store\data gespeichert. Es kann auch als Datenbankspeicher konfiguriert werden.
Integritätsgarantie
Es gibt keine Garantie, dass jedes vom Verlag veröffentlichte Datenstück vom Abonnenten akzeptiert wird.
Warteschlange garantiert, dass jedes Datenstück vom Empfänger empfangen werden kann.
ob die Botschaft verloren geht
Im Allgemeinen gilt: Wenn ein Verlag eine Nachricht zu einem Thema veröffentlicht, kann nur das Subreddit empfangen, das die Themenadresse hört. Wenn kein Sub zuhört, ist das Thema verloren.
Der Absender sendet eine Nachricht an die Ziel-Warteschlange, und der Empfänger kann Nachrichten auf dieser Warteschlange asynchron empfangen. Nachrichten in der Warteschlange gehen nicht verloren, wenn es vorerst keinen Empfänger gibt, der sie abnimmt.
Empfangsrichtlinie für Nachrichtenfreigabe
Bei der Eins-zu-viele-Nachrichtenveröffentlichungs- und Empfangsrichtlinie können mehrere Subreddits, die dieselbe Themenadresse ansprechen, Nachrichten des Verlags empfangen. Das Sub erhält die Benachrichtigung an den mq-Server
Eins-zu-eins-Nachrichtenveröffentlichungs- und Empfangsrichtlinien: Nachrichten, die vom Absender gesendet werden, können nur von einem Empfänger empfangen werden. Nachdem der Empfänger empfangen hat, informiert der MQ-Server den MQ-Server, dass er empfangen wurde, und der MQ-Server löscht oder führt andere Aktionen an den Nachrichten in der Warteschlange durch.

 Vermieter| Veröffentlicht am 09.01.2017 13:42:15 |
Der größte Unterschied zwischen Thema und Warteschlange besteht darin, dass das Thema in Form von Broadcasting vorliegt, bei dem alle Online-Hörclients über eine neue Nachricht benachrichtigt werden, und der Client ohne Überwachung die Nachricht nicht empfängt; Warteschlange hingegen benachrichtigt einen von mehreren Listening-Clients im Peer-to-Peer-Modus.

2 Vergleich der Nachrichtenverarbeitungseffizienz zwischen Themen- und Warteschlangenmethoden
        Indem Sie die Anzahl der Nebenläufigkeit des Hörclients erhöhen, überprüfen Sie, ob die Nachrichtenübertragung des Themas aufgrund der Zunahme der Nebenläufigkeit des Hörclients deutlich abnimmt.
        Aus den gemessenen Ergebnissen gibt es keinen signifikanten Unterschied in der Effizienz des Sendens und Empfangens von Nachrichten, die mit der Topic-Methode unter der Prämisse eines Abonnenten und 100 Abonnenten gesendet werden, aber unter der Prämisse von 500 Abonnenten (Threads) Nebenläufigkeit ist der Effizienzunterschied offensichtlich (aufgrund der Nebenläufigkeit von 500 Threads liegt die CPU-Auslastung meiner Maschine bei bis zu 70–90 %, sodass es unmöglich ist zu bestätigen, ob es sich um einen Leistungsengpass handelt, der durch meinen lokalen Test verursacht wird oder um einen Performance-Engpass bei der Methode des Themen-Nachrichtensenden). was zu einem so deutlichen Effizienzverlust führt).
        Es gibt keinen signifikanten Unterschied in der Effizienz des Sendens und Empfangens von Nachrichten, die per Themenmethode und Warteschlangenmodus unter der Prämisse eines Teilnehmers und 100 Abonnenten gesendet werden, aber unter der Prämisse einer Parallelität von 500 Abonnenten ist die Effizienz des Themenmodus deutlich geringer als die der Warteschlange.
        Die Effizienz des Sendens und Empfangens von Nachrichten, die in der Warteschlangenmethode gesendet werden, ändert sich unter der Voraussetzung eines Abonnenten, 100 und 500 Abonnenten nicht wesentlich.
Themengemessen Daten:


Die Gesamtzahl der vom Absender gesendeten Nachrichten
Die Gesamtzahl der von allen Abonnenten empfangenen Nachrichten
Die durchschnittliche Zeit, die zum Senden und Empfangen von Nachrichten benötigt wird
Einzelkunde
100
100
101ms
100 Abonnenten
100
10000
103 ms
500 Abonnenten
100
50000
14162ms

Warteschlange-gemessene Daten:


Die Gesamtzahl der vom Absender gesendeten Nachrichten
Die Gesamtzahl der von allen Abonnenten empfangenen Nachrichten
Die durchschnittliche Zeit, die zum Senden und Empfangen von Nachrichten benötigt wird
Einzelkunde
100
100
96ms
100 Abonnenten
100
100
96ms
500 Abonnenten
100
100
100 ms

Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com