ホームページ >php教程 >PHP开发 >ActiveMQ のセッション設定の関連理解

ActiveMQ のセッション設定の関連理解

高洛峰
高洛峰オリジナル
2016-11-22 13:14:292601ブラウズ

参考ブログ投稿: http://www.cnblogs.com/SzeCheng/p/4792084.html

参考ブログ投稿: http://activemq.apache.org/Producer-flow-control.html

用語の説明:

P: プロデューサー

C: コンシューマー

サーバー: P または ActiveMQ サービス

クライアント: ActiveMQ サービスまたは C

クライアントがメッセージを正常に受信したという兆候は、メッセージが署名されていることです。メッセージを正常に受信するには、通常、次の 3 つの段階が含まれます。

1.クライアントはメッセージを受け取ります

2.クライアントはメッセージを処理します

3.メッセージは署名されています。

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

トランザクションのないセッションでは、メッセージがいつどのように署名されるかは、セッションの設定によって異なります。

1. Session.AUTO_ACKNOWLEDGE

クライアントが受信または onMessage から正常に戻ると、Session はクライアントによるこのメッセージの受信に自動的に署名します。

2. Session.CLIENT_ACKNOWLEDGE

クライアントは、メッセージのacknowledgeメソッドを呼び出してメッセージに署名します。

message.acknowledge();

トランザクションを伴うセッションでは、トランザクションが送信されると署名が自動的に発生します。トランザクションがロールバックされると、受信したすべてのメッセージが再度配信されます。実際、ここでの Session.CLIENT_ACKNOWLEDGE はほとんど役に立ちません。

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

概要:

1. プロデューサーの場合: サーバーは P、クライアントは ActiveMQ サービスです。 セッションは AUTO_ACKNOWLEDGE と CLIENT_ACKNOWLEDGE に設定されますが、状況によりますが、その差はそれほど大きくありません。

2. コンシューマの場合: サーバーは ActiveMQ で、クライアントは C です。セッションは AUTO_ACKNOWLEDGE に設定され、メッセージが受信されると (受信または onMessage が正常に返される)、消費は成功し、データはキューから削除されます。データが目的の結果に正しく処理されるかどうかは気にしません。セッションが CLIENT_ACKNOWLEDGE に設定されている場合、正常に消費するには確認メソッドを手動で呼び出す必要があり、その後データはキューから削除されます。

3. P と C のセッションが相互に影響を与えないように設定されているモード。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。