2.6、ActiveMQのメッセージ確認メカニズム-ACK

著作権:ソースを宣言するために、交換を増刷へようこそ。心の状態に先立ってパフォーマンスステータス、前決意の習慣は、好み--Bestcxx https://blog.csdn.net/bestcxx/article/details/90551495に最初に焦点を当てます

序文

心の状態に先立ってパフォーマンスステータス、前決意の習慣は、好みに最初に焦点を当てます

ACK(確認応答)承認文字

メッセージングミドルウェアのメッセージの送受信は、対話とメッセージングミドルウェアの間に私たちのプログラムは、確認処理が完了している方法です、非常に一般的なシナリオです?プロデューサーがメッセージングミドルウェアにメッセージを送信するなど、メッセージングミドルウェアを伝えるためにどのように消費者から?別の例を送ってきたメッセージミドルウェアからのメッセージを取得し、メッセージングミドルウェアは、消費者を確認する方法であるメッセージを正常に処理したのか?
これは、確認メッセージの状態、すなわち、ACKに関し、以下に詳細

JMSは、ACKの4つのタイプを定義します

で定義されたJAVA JMSメッセージサービスのAPIとしてjavax.jms.SessionACKは4つのタイプを定義します

/**生产者或者消费者端设置,自动确认模式,也是默认级别,只要消息被发送完毕,或者接受完毕即算完成*/
static final int AUTO_ACKNOWLEDGE = 1;
/**仅在消费者端配置,需要消费者端调用 message.acknowledge() 进行消息确认*/
static final int CLIENT_ACKNOWLEDGE = 2;
/**仅在消费端配置,批量消息确认模式,有可能造成消息中间件无法及时收到消息被客户端正确处理的情况,依据消息重试策略可能造成消息重复消费*/
static final int DUPS_OK_ACKNOWLEDGE = 3;
/**生产者或者消费者端设置,需要开始事务*/
static final int SESSION_TRANSACTED = 0;

ActiveMQのACK ACKタイプより1つ多いです

ActiveMQのは、ACK定義されたこの4種類のJMSに加えて、JMS標準に従うだけでなく、AMQPなど他のプロトコルを達成するためにorg.apache.activemq.ActiveMQSession、別個のACKタイプを定義します

* 翻译:在 INDIVIDUAL_ACKNOWLEDGE 模式下,每次 调用 message.acknowledge() 仅会确认
* 一条消息,作为对比,在 CLIENT_ACKNOWLEDGE 模式下,在一个 session 中可以一次消费多个消息
* ,但是仅调用一次 acknowledge() 即可表示对所有消息的确认
* 
* Only acknowledge an individual message - using message.acknowledge()
* as opposed to CLIENT_ACKNOWLEDGE which
* acknowledges all messages consumed by a session at when acknowledge()
* is called
*/
public static final int INDIVIDUAL_ACKNOWLEDGE = 4;

JmsTemplate CLIENT_ACKNOWLEDGEモードがサポートされていませんか?

議論の後、我々はmessage.acknowledge()を呼び出すことによって、メッセージを確認するメッセージを消費することができ、クライアントの顔を見ることができますが、JmsTemplateはこの設定になっている場合でも、方法を提供することで、クライアントが呼び出して行くことができませんmessage.acknowledge()、メッセージはなぜ、常にデフォルトで提出しているようですか?

メッセージングサービスを提供するために、テンプレートとして春JmsTemplate、その存在の意義は、それが自動的にAUTO_ACKNOWLEDGEモードというJmsTemplateトランザクションをコミットしますデフォルトではので、大多数を構成することなく分配される
あなたはJDBCについて考えることができるが、また、そのようなことではありませんあなたは、トランザクションの設定を使用しない限り、トランザクションは、デフォルトで提出される。JmsTemplateのために、あなたがトランザクション構成に参加したい場合はMyBatisのを使用した場合、また、個別の設定を追加する必要があります

手動でニュースを確認したい場合は、少なくとも、あなたはこれらについてのメッセージをロールバックすることができますので、いずれかの新しいトランザクションの設定、デフォルトのメッセージ確認メカニズムを受け入れるのいずれか、その後JmsTemplateを使用するのであれば、ActiveMQのが提供する使用することはまだいいです実装は、以下に提示されます。

おすすめ

転載: blog.csdn.net/bestcxx/article/details/90551495