Spring RabbitMQ

キュー構成パラメータ

パラメータ(めい)説明(せつめい)Java 構成例(こうせいれい)ベストプラクティス
durableキューの永続性(えいぞくせい) 。ディスクへの保存(ほぞん)決定(けってい) します。new Queue("myQueue", true)実運用(じつうんよう) では true推奨(すいしょう) します。
exclusive排他性(はいたせい)作成(さくせい) した接続(せつぞく) のみに公開(こうかい)new Queue("myQueue", true, true, false)応答用(おうとうよう) の一時的なキューに使用(しよう)
autoDelete自動削除(じどうさくじょ)最後(さいご) のコンシューマーが離脱後(りだつご)削除(さくじょ)new Queue("myQueue", true, false, true)一時的(いちじてき) なキューは true
ignoreDeclarationExceptions宣言例外無視(せんげんれいがいむし)@RabbitListener(queuesToDeclare = @Queue(value = "q", ignoreDeclarationExceptions = "true"))インフラとの柔軟(じゅうなん)接続用(せつぞくよう)
x-queue-typeキューのタイプ(streamclassic)。QueueBuilder.durable("q").withArgument("x-queue-type", "stream")大規模な()() りには stream
x-dead-letter-exchangeデッドレター交換機(こうかんき)QueueBuilder.durable("q").withArgument("x-dead-letter-exchange", "dlx")エラー処理用(しょりよう)
x-message-ttlメッセージの有効期限(ゆうこうきげん)QueueBuilder.durable("q").withArgument("x-message-ttl", 60000)メッセージの滞留回避(たいりゅうかいひ)

交換機構成パラメータ

パラメータ(めい)説明(せつめい)Java 構成例(こうせいれい)使用(しよう) シーン
durable交換機(こうかんき)永続性(えいぞくせい)new DirectExchange("ex", true, false)本番環境(ほんばんかんきょう) では true
autoDelete自動削除(じどうさくじょ)new DirectExchange("ex", true, true)一時的(いちじてき)交換機(こうかんき)
typeタイプ:direct, fanout, topic, headersnew TopicExchange("myTopic")ルーティング要件(ようけん)(おう) じて。
delayed遅延交換機(ちえんこうかんき)ExchangeBuilder.directExchange("ex").delayed().build()予約通知(よやくつうち) など。

RabbitListener 注釈パラメータ

パラメータ(めい)説明(せつめい)Java 構成例(こうせいれい)
queuesToDeclare必要(ひつよう) なキューの宣言(せんげん)@RabbitListener(queuesToDeclare = @Queue("name"))
bindings交換機(こうかんき) 、キュー、キーのバインディング。@RabbitListener(bindings = @QueueBinding(...))
ackMode確認(かくにん) モード。@RabbitListener(queues = "q", ackMode = "MANUAL")
concurrency並列実行数(へいれつじっこうすう)@RabbitListener(queues = "q", concurrency = "3-10")

メッセージ保証レベル

レベル説明(せつめい)構成(こうせい) のポイント使用(しよう) シーン
最大(さいだい) 1(かい)紛失(ふんしつ)可能性(かのうせい) あり、重複(ちょうふく) なし。ackMode=NONE速度を優先(ゆうせん)
最低(さいてい) 1(かい)紛失(ふんしつ) なし、重複(ちょうふく)可能性(かのうせい) あり。ackMode=AUTO + 永続化(えいぞくか)標準的(ひょうじゅんてき)業務(ぎょうむ)
正確(せいかく) に1(かい)紛失(ふんしつ)重複(ちょうふく) もなし。冪等性処理(べきとうせいしょり) + 事務金融決済(きんゆうけっさい)

実装

  • RabbitTemplate:メッセージの送受信(そうじゅうしん) に使用。
  • AmqpAdmin:キューや交換機(こうかんき)管理(かんり)
  • MessageConverter:Java オブジェクトと JSON などの変換(へんかん)

図解

1対多

  flowchart LR
    EX[Exchange]
    B1((Binding<br/>rk1))
    B2((Binding<br/>rk2))
    Q1[Queue1]
    Q2[Queue2]

    EX --> B1 --> Q1
    EX --> B2 --> Q2

多対1

  flowchart LR
    EX1[Exchange1]
    EX2[Exchange2]
    B1((Binding))
    B2((Binding))
    Q1[Queue1]

    EX1 --> B1 --> Q1
    EX2 --> B2 --> Q1