2016-05-28 19 views
1

Spring AMQPプロジェクトでは、 messagePropertiesにmessageIdがない場合、常にmessageIdが作成されます。このようAMQPにmessageIdが必要な理由

..

if (this.createMessageIds && messageProperties.getMessageId()==null) { 
    messageProperties.setMessageId(UUID.randomUUID().toString()); 
} 

私はのmessageIdが何であるかを知りたいです。ですから、私はどこのメッセージIDが使用されているかを調べようとします。しかし、私はSpring AMQP Sourceでそれを見つけることができませんでした。

messageIdが存在しない場合はどうなりますか? AMQPでmessageIdが必要なのはなぜですか?

答えて

2

メッセージIDは、コンバータのcreateMessageIdsがtrueの場合にのみ作成されます。デフォルトではfalseです。

コンシューマ側でステートフルリトライを使用している場合を除き、通常は必須ではありません。

ステートフルリトライを使用して配信に失敗すると、メッセージは拒否され、ブローカによって再配信されます。 RabbitMQにはヘッダの再試行回数が含まれていないので、配送が試行された回数を把握して、maxAttemptsに達した後であきらめることができます。メッセージIDは、このメッセージの再試行状態を調べるために使用されます。

関連する問題