こんにちは。サイオステクノロジーの木村です。
今回はSpring AMQPを使ってRabbitMQにメッセージを送受信する方法を記載します。
Spring frameworkの中にはメッセージングサービス用のライブラリであるSpring AMQPが用意されており、Spring AMQPを使用するとメッセージングサービスの実装がとても簡単にできます。
RabbitMQの準備
RabbitMQについては以下の記事に詳しく記載されていますのでそちらを参照し、インストール等を行ってください。
RabbitMQによる非同期処理
インストール後、管理コンソールにて、キューとExchangeを任意の名前で作成し、作成したExchangeをキューにバインドさせておきます。
以下の手順では、キューを「test-queue」、Exchangeを「test-exchange」という名前で作成したと仮定して記載します。
依存性の追加
pom.xmlに以下を記載します。
RabbitMQ接続情報設定
ローカルにRabbitMQがインストールされており、デフォルトの設定で接続する場合、特に設定をする必要はありません。RabbitMQインストール環境がローカルでない場合やデフォルトの設定以外で接続したい場合などは設定が必要です。因みに、RabbitMQインストール環境がローカルでない場合にデフォルトのユーザー(guest)で接続しようとするとエラーとなるため、その場合はユーザーを作成して設定する必要があります。
以下にapplication.propertiesでの設定例を記載します。
spring.rabbitmq.host → RabbitMQホスト名(localhost)
spring.rabbitmq.port → ポート番号(5672)
spring.rabbitmq.username → ユーザー名(guest)
spring.rabbitmq.password → パスワード(guest)
spring.rabbitmq.template.exchange → Exchange名(なし)
spring.rabbitmq.template.retry.enabled → 配信に失敗した際、リトライするかどうか(false)
spring.rabbitmq.template.retry.max-attempts → リトライ回数(3)
※()内の値はデフォルト値。特に設定しない場合、デフォルト値で接続が行われる。
メッセージ受信処理の実装
test-queueに送信されたメッセージを受信し、コンソールに出力します。
メッセージ送信処理の実装
上記のようにsendメソッドを実装しておき、送信処理をしたい箇所でメソッドを呼び出せば送信することができます。
とても簡単ですね!