Spring AMQP × RabbitMQ

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【3/22開催】テックブログを書こう!アウトプットのススメ
1年で100本ブログを出した新米エンジニアがPV数が伸びなくてもTech Blogを書き続ける理由とは?
https://tech-lab.connpass.com/event/312805/

【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

こんにちは。サイオステクノロジーの木村です。
今回は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メソッドを実装しておき、送信処理をしたい箇所でメソッドを呼び出せば送信することができます。

とても簡単ですね!

アバター画像
About 木村 29 Articles
Azureなどのクラウドでの稼働を主としたアプリケーション開発を行なっています。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる