CodeZine(コードジン)

特集ページ一覧

RabbitMQの導入と、Spring AMQPを利用したメッセージ送受信

Spring AMQP×RabbitMQで始めるメッセージキューイング 第1回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2012/12/28 14:00

 スケールしやすいシステムを作るためのキーワード『非同期処理』。今回は、オープンソースのメッセージキューイングミドルウェアであるRabbitMQをSpring frameworkを使って実装する入門編です。Spring AMQPを利用することでJavaで簡単に非同期アプリケーションの開発が行えます。

目次

はじめに

 一般的に、システム間の連携は疎結合であることが望ましいとされています。その理由はさまざまですが、異なるシステム間での連携を疎結合にすると変更しやすい、障害時の影響を小さくしやすい、などがあげられます。

 そういった実装を行うにあたって、しばしば利用されるものが「メッセージキューイング」です。メッセージングキューイングとは、簡単に言うとアプリケーション間のデータをメッセージとして、そのやり取りをキューと呼ばれる領域を利用して行うものです。メッセージキューイングでは送信側はメッセージの送信後、処理結果を待たずに次の処理を行うため、非同期に処理を行うことが可能となります。このように、メッセージキューイングを利用することでシステム間を疎結合にするだけでなく、部分的なスケールアウトを容易に行えるなどのメリットがあります。

 メッセージキューイングのオープンなプロトコルとしてAMQP(Advanced Message Queuing Protocol)というものがあり、その実装にはいくつかあります。RabbitMQはAMQPの代表的な実装の一つでありVMware社よりオープンソースソフトウェアとして提供されています。この連載では、RabbitMQの導入から、JavaでRabbitMQを利用した開発をSpring AMQPというフレームワークを利用して行う場合の基礎をソースコードとともに解説します。

対象読者

 RabbitMQを利用したJavaアプリケーションの開発を行いたいと考えている方。

Spring AMQPとは

 Spring AMQPとは、オープンソースのフレームワークとして有名なSpring Frameworkのサブプロジェクトとして提供されているフレームワークです。Spring AMQPを利用することで取り出したメッセージからオブジェクトへの変換が容易になったり、オブジェクトを利用してメッセージの送受信を行うことができるようになります。送受信そのものはもちろん、キューをモニタするリスナーの実装も簡単に行うことができます。なお、Spring AMQPには今回解説するJava版だけではなく.NET版も存在します。

RabbitMQの導入

 まずはRabbitMQのセットアップを行います。RabbitMQのインストールには、RabbitMQ本体のほか、Erlangが必要となりますので、Erlangを導入した上でRabbitMQのインストールを行います。とはいえRabbitMQのインストール自体は、配布されているファイルを展開するだけです。

 今回は一般的なUNIX用のインストールを行いますが、Debian/Ubuntu向け、RHEL/CentOS向けにパッケージ化されているものも配布されていますので、各パッケージ管理システムを利用した導入も可能です。

 まずはErlangの最新版を、ダウンロードサイトからダウンロードします。筆者の環境はMacなので、今回は「Erlang R15B03 64bit.dmg」を使います。ご利用の環境に応じて適宜読み替えてください。

 インストーラを起動すると以降はウィザード形式で進みますが今回はすべてデフォルトのままとしました。インストールが完了しましたら、ターミナルを開いて「erl」と入力してみましょう。正常にインストールされている場合は、以下のような画面が表示されます。

インストール確認
$ erl
Erlang R15B03 (erts-5.9.3) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.3  (abort with ^G)
1> 

 終了する場合は「q().」と入力してください。最後のドットも必要です。

 続いてRabbitMQをインストールします。ダウンロードページから、今回はtar.gz版をダウンロードします。

 ダウンロードが完了したら、任意のディレクトリで解凍・展開します。

$ tar xvfz rabbitmq-server-generic-unix-3.0.1.tar.gz 
Macでインストールするには

 本連載はMac上で開発しています。Macをご利用の方で簡単にローカルマシンに導入して試してみたい場合、上記の方法以外に、Macで利用可能なパッケージ管理システムであるHomebrew/Macportsを利用して導入することも可能です。

動作確認

 では実際に、インストールしたRabbitMQを起動してみましょう。起動の前に、管理用のコマンドラインやWebベースの管理画面を利用できるようにしておきます。そしてターミナルを開き、展開したディレクトリに移動します。

$ sudo ./sbin/rabbitmq-plugins enable rabbitmq_management
$ sudo ./sbin/rabbitmq-server -detached

 1行目のコマンドはRabbitMQのプラグインを有効化するコマンドです。今回は管理用のWebインターフェースやコマンドラインを提供するrabbitmq_managementというプラグインを有効化しました。また、起動時のオプションに-detachedをつけることでバックグラウンドで起動されます。

 続いてWebで提供されている管理画面にアクセスします。ブラウザから、http://localhost:55672/にアクセスしてください。インストール直後の初期ユーザ名とパスワードは「guest」「guest」となっています。

 停止は以下のコマンドで行えます。

$ sudo sbin/rabbitmqctl stop

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • 西谷 圭介(ニシタニ ケイスケ)

    TIS株式会社所属。金融系基幹システムの開発等に従事したのち、サービス企画・開発を担当。IaaS開発を経て、現在はアプリ開発者のためのPaaS「eXcale」の開発責任者兼プログラマとして活動中。 Twitter:@Keisuke69 eXcale:http://www.excale.net...

バックナンバー

連載:Spring AMQP×RabbitMQで始めるメッセージキューイング
All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5