1. tsukapah

    Posted

    tsukapah
Changes in title
+ローカルにMQを起動して使ってみる
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,117 @@
+最近[ElasticMQ](https://github.com/adamw/elasticmq)というのを知りました。
+Amazon SQS-compatible interface ということで、Amazon SQSを使ったアプリケーション開発が捗りそうです。
+ちょうど試そうと思った今日(2016/11/23)にVersion 0.11.0になっていました。
+java6以降が入ってれば動くようです。
+今回はDockerで動かして、aws-cliで接続してみたいと思います。
+
+# Dockerfileの作成
+```Dockerfile
+FROM java:8
+
+ADD https://s3-eu-west-1.amazonaws.com/softwaremill-public/elasticmq-server-0.11.0.jar /elasticmq/elasticmq-server-0.11.0.jar
+EXPOSE 9324
+ENTRYPOINT ["java","-jar","/elasticmq/elasticmq-server-0.11.0.jar"]
+```
+
+# コンテナイメージのビルド
+```bash
+$ docker build -t tsukapah/elasticmq:0.11.0 .
+Sending build context to Docker daemon 2.048 kB
+Step 1 : FROM java:8
+8: Pulling from library/java
+386a066cd84a: Pull complete
+75ea84187083: Pull complete
+88b459c9f665: Pull complete
+690dbea0e4ca: Pull complete
+7e401cdd6f18: Pull complete
+a58186ddf9a0: Pull complete
+49999ed55bc4: Pull complete
+eb40561aad8f: Pull complete
+Digest: sha256:dd0fc686a5584c0c7f3e50dd84ddc42fae400c27a21d8ca98dad190aff5e9d52
+Status: Downloaded newer image for java:8
+ ---> 861e95c114d6
+Step 2 : ADD https://s3-eu-west-1.amazonaws.com/softwaremill-public/elasticmq-server-0.11.0.jar /elasticmq/elasticmq-server-0.11.0.jar
+Downloading 30.2 MB/30.2 MB
+ ---> 55fa5752ace4
+Removing intermediate container 2529a37411e1
+Step 3 : EXPOSE 9324
+ ---> Running in 0465d32da4e8
+ ---> 052963c601f8
+Removing intermediate container 0465d32da4e8
+Step 4 : ENTRYPOINT java -jar /elasticmq/elasticmq-server-0.11.0.jar
+ ---> Running in e283caeeb0b2
+ ---> 3f6b0738e570
+Removing intermediate container e283caeeb0b2
+Successfully built 3f6b0738e570
+```
+
+# コンテナの起動
+```bash
+docker run -d --name=elasticmq -p 9324:9324 tsukapah/elasticmq:0.11.0
+082c9ffb6c1048615b72fabf1440241f77f9decbf74adb142fae75b0bcacfd2c
+```
+どうやら起動したみたいです。
+
+# aws-cliを使って接続してみる
+```bash
+$ aws sqs list-queues --endpoint-url http://localhost:9324
+```
+なんも出力されない。まぁQueueがないので当然なんだけど。
+ちなみにCredentialやDefaultResionが設定されていないと以下の感じでエラーが出ます。
+ダミーでもいいので設定しましょう。
+
+```bash
+$ aws sqs list-queues --endpoint-url http://localhost:9324
+You must specify a region. You can also configure your region by running "aws configure".
+```
+
+## Queueの作成
+```bash
+$ aws sqs create-queue --queue-name test --endpoint-url http://localhost:9324
+{
+ "QueueUrl": "http://localhost:9324/queue/test"
+}
+```
+お、どうやらできたっぽい。
+
+## Queueの確認
+```bash
+$ aws sqs list-queues --endpoint-url http://localhost:9324
+{
+ "QueueUrls": [
+ "http://localhost:9324/queue/test"
+ ]
+}
+```
+
+## メッセージの投入
+```bash
+$ aws sqs send-message --queue-url http://localhost:9324/queue/test --message-body "Information about the largest city in Any Region." --endpoint-url http://localhost:9324
+{
+ "MD5OfMessageBody": "51b0a3256d59467f973009b739163aa0",
+ "MD5OfMessageAttributes": "d41d8cd98f00b204e9800998ecf8427e",
+ "MessageId": "8df11eeb-e83c-4076-8b63-1edec5265402"
+}
+```
+入ったみたいです。
+`--queue-url`と`--endpoint-url`が冗長な感じで気持ち悪いですが、どっちも必要です。
+
+## メッセージの取得
+```bash
+$ aws sqs receive-message --queue-url http://localhost:9324/queue/test --endpoint-url http://localhost:9324
+{
+ "Messages": [
+ {
+ "Body": "Information about the largest city in Any Region.",
+ "MD5OfMessageAttributes": "d41d8cd98f00b204e9800998ecf8427e",
+ "ReceiptHandle": "8df11eeb-e83c-4076-8b63-1edec5265402#0f0d12eb-dd37-4ac8-a11d-a8c41420eca0",
+ "MD5OfBody": "51b0a3256d59467f973009b739163aa0",
+ "MessageId": "8df11eeb-e83c-4076-8b63-1edec5265402"
+ }
+ ]
+}
+```
+無事取り出せました。
+
+---
+簡単でした。