確認メッセージプロデューサのRabbitMQの

出版社の確認と戻り機構により、生産者は、メッセージが交換とキュー、およびメカニズムを確認することにより、消費者に送られているかどうかを判断することができ、RabbitMQのは、メッセージが処理されることを保証するために、消費者へのメッセージを再送信するかどうかを決定することができます。

1.パブリッシャの確認と戻り値とは何ですか?

消費者からのRabbitMQへの配信処理の確認応答はAMQP 0-9-1用語で確認応答として知られています。出版社へのブローカの通知は、パブリッシャと呼ばれるプロトコル拡張が確認されている。 
地址:http://www.rabbitmq.com/confirms.html

パブリッシャ(出版社)の公式のRabbitMQネット定義、RabbitMQのエージェント(ブローカー)肯定応答が(サイト運営者が確認)パブリッシャ肯定応答と呼ばれ、この機構は、標準的なプロトコルにRabbitMQのAMQPの拡張です。だから、メッセージは、このメカニズムを介してターゲットに送信されているかどうかを確認することができます。

2.どのように春のAMQPにより、出版社の確認や戻り値メカニズムを使用するには?

確認し、返されたメッセージが「本当」にCachingConnectionFactoryのpublisherConfirmsとpublisherReturnsのプロパティを設定することにより、サポートされているrespectively.Whenこれらのオプションは、設定されているチャンネルのコールバックを容易にするために使用されるPublisherCallbackChannel、に包まれている工場で作成されました。このようなチャネルが得られた場合、クライアントはチャンネルでPublisherCallbackChannel.Listenerを登録することができます。PublisherCallbackChannelの実装では、適切なリスナーへのルート確認/リターンにロジックが含まれています。これらの機能は、以下のセクションでさらに説明されています。 
http://docs.spring.io/spring-amqp/docs/1.6.3.RELEASE/reference/html/_reference.html#cf-pub-conf-ret

春のAMQPは、このメカニズムを使用するために、文書を通して見ることができるpublisherConfirmsテンプレートテンプレートまたはpublisherReturnsプロパティを設定する必要がCachingConnectionFactoryを設定する場合はtrue、しかも接続ファクトリに設定されています。

コードをコピー
    <ビーンID = "はconnectionFactory"
         クラス= "org.springframework.amqp.rabbit.connection.CachingConnectionFactory"> 
        <プロパティ名= "ホスト"値= "192.168.2.133" /> 
        <プロパティ名= "ポート"値= "5672 "/> 
        <プロパティ名="ユーザ名"値= "日"/> 
        <プロパティ名= "パスワード"値= "123456"/> 
        <プロパティ名= "publisherConfirms"値= "true"を/> 
        <プロパティ名=" publisherReturns」値= "true"を/> 
    </豆>
コードをコピー

2.1 ConfirmCallbackのシナリオを使用してトリガ

コードをコピー
輸入org.slf4j.Logger。
輸入org.slf4j.LoggerFactory; 輸入org.springframework.amqp.rabbit.core.RabbitTemplate。輸入org.springframework.amqp.rabbit.support.CorrelationData。輸入org.springframework.stereotype.Service。/ ** * @authorのwangzhongqiu * 2017年10月31日に作成されました。* @description:继承RabbitTemplate.ConfirmCallback、消息确认监听器* / @Service パブリッククラスConfirmCallBackListenerが実装RabbitTemplate.ConfirmCallback { プライベートロガーログ= LoggerFactory.getLogger(CommonProducer クラス)。@Override 公衆無効の確認(CorrelationData correlationData、ブールACK、原因は文字列である){log.info( "成功したブローカーを送信するために、コールバックを受け取ります" );}}
コードをコピー

2.2 ReturnCallbackのシナリオを使用してトリガ

コードをコピー
輸入org.slf4j.Logger。
輸入org.slf4j.LoggerFactory; 輸入org.springframework.amqp.core.Message。輸入org.springframework.amqp.rabbit.core.RabbitTemplate。輸入org.springframework.stereotype.Service。/ ** * @authorのwangzhongqiu * 2017年10月31日に作成されました。* @description:继承RabbitTemplate.ReturnCallback、消息发送失败返回监听器* / @Service パブリッククラスReturnCallBackListenerが実装RabbitTemplate.ReturnCallback { プライベートロガーログ= LoggerFactory.getLogger(CommonProducer クラス)。@Override 公共ボイドreturnedMessage(メッセージメッセージ、INT replyCode、文字replyText、文字列の交換、列routingKey){log.info( "收到回调" )。log.info( "戻る-メッセージ:" + 新しいString(message.getBody())+ "replyCode:" + replyCode + "replyText:" + replyText + "為替:" +交流+」、routingKeyを: 「+ routingKey)。}}
コードをコピー

使用シナリオ:

メッセージを交換することをされていない場合は、= falseのコールバック、ACKを確認します

メッセージがExchangeに達した場合には、真のコールバック、ACK =を確認

成功したキューに交換、コールバックの戻りません

キューへの交換は、コールバックのリターン失敗した(それ以外の場合は、コールバックを返さない真=必須設定するために、メッセージが失われました)

 

転載:: http://www.cnblogs.com/wangzhongqiu/

おすすめ

転載: www.cnblogs.com/leeego-123/p/11238428.html