Amazon SQS互換のインターフェースを提供するElasticMQを使ってみる(とりあえずAWS CLIで接続確認するまで)

Amazon SQSを使うときに悩むのがローカルでの開発環境をどうするか。
ElasticMQはAmazon SQSと同様のインターフェースを提供してくれる、スタンドアロンなメッセージキューイングシステム。

github.com

これを使ってローカルに閉じた環境でAmazon SQSの利用を想定したアプリケーション作成ができたら良さそう。

というわけで試してみる。

ElasticMQが動くDockerコンテナを準備する

Dockerfile の作成。

FROM java:8

RUN mkdir /var/elasticMQ
WORKDIR /var/elasticMQ

EXPOSE 9324

RUN wget -q https://s3-eu-west-1.amazonaws.com/softwaremill-public/elasticmq-server-0.13.9.jar

ENTRYPOINT ["/usr/bin/java", "-Djava.library.path=.", "-jar", "elasticmq-server-0.13.9.jar"]

Dockerイメージのビルド。

$ docker build -t tomcky/elasticmq:0.13.9 .

コンテナ起動。

$ docker run -d --rm --name elasticmq -p 9324:9324 tomcky/elasticmq:0.13.9

aws-cliで試してみる

Queueの作成

$ aws sqs create-queue --queue-name test --endpoint-url http://localhost:9324
{
    "QueueUrl": "http://localhost:9324/queue/test"
}

こんな感じで QueueUrl が返ってきたら成功している、はず。
DefaultRegionなどが設定されていないとエラーが返ってくるようなので、ダミーでよいので設定する必要がある。

次はSymfonyアプリケーションから接続してみる。
別記事で。