Heim >php教程 >PHP开发 >Verwandtes Verständnis der Sitzungseinstellungen in ActiveMQ

Verwandtes Verständnis der Sitzungseinstellungen in ActiveMQ

高洛峰
高洛峰Original
2016-11-22 13:14:292601Durchsuche

Referenz-Blogbeitrag: http://www.cnblogs.com/SzeCheng/p/4792084.html

Referenz-Blogbeitrag: http://activemq.apache.org/producer-flow-control. html

Begriffserklärung:

P: Producer

C: Consumer

Server: P oder ActiveMQ-Dienst

Client: ActiveMQ Dienst oder C

Das Zeichen dafür, dass der Client eine Nachricht erfolgreich empfängt, ist, dass die Nachricht signiert wurde. Der erfolgreiche Empfang einer Nachricht umfasst im Allgemeinen die folgenden drei Phasen:

1. Der Kunde erhält die Nachricht;

2. Der Client verarbeitet die Nachricht;

3. Die Nachricht ist signiert.

session = connection.createSession(Boolean.false, Session.CLIENT_ACKNOWLEDGE);##第一个参数控制事务,第二个参数控制消息

In einer Sitzung ohne Transaktionen hängt es von den Sitzungseinstellungen ab, wann und wie eine Nachricht signiert wird.

1. Session.AUTO_ACKNOWLEDGE

Wenn der Client erfolgreich von „receive“ oder „onMessage“ zurückkehrt, signiert Session automatisch den Empfang dieser Nachricht durch den Client.

2. Session.CLIENT_ACKNOWLEDGE

Der Client signiert die Nachricht, indem er die Bestätigungsmethode der Nachricht aufruft.

message.acknowledge();

In einer Sitzung mit einer Transaktion erfolgt die Signatur automatisch, wenn die Transaktion übermittelt wird. Wenn die Transaktion zurückgesetzt wird, werden alle empfangenen Nachrichten erneut zugestellt. Tatsächlich ist Session.CLIENT_ACKNOWLEDGE hier von geringem Nutzen.

session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE);
session.commit();

Zusammenfassung:

1 Für den Produzenten: Der Server ist P und der Client ist der ActiveMQ-Dienst. Die Sitzung ist auf AUTO_ACKNOWLEDGE und CLIENT_ACKNOWLEDGE eingestellt. Relativ gesehen ist der Unterschied nicht sehr groß.

2. Für Verbraucher: Der Server ist ActiveMQ und der Client ist C. Die Sitzung wird auf AUTO_ACKNOWLEDGE gesetzt. Wenn eine Nachricht empfangen wird (receive oder onMessage erfolgreich zurückgegeben), ist der Verbrauch erfolgreich und die Daten werden aus der Warteschlange entfernt. Es ist uns egal, ob die Daten korrekt zu den gewünschten Ergebnissen verarbeitet werden; wenn die Sitzung auf CLIENT_ACKNOWLEDGE gesetzt ist, muss die Bestätigungsmethode für eine erfolgreiche Nutzung manuell aufgerufen werden, und dann werden die Daten aus der Warteschlange entfernt.

3. In welchem ​​Modus die Sitzungen von P und C keinen Einfluss aufeinander haben.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn