Ruby on Rails 版 Worker

Worker の動作確認

magellan-cli には、Worker の動作を簡単に確認するための機能があります。ここでは、magellan-cli のこの機能を使って、Worker の動作を確認します。

magellan-cli の Worker 動作確認機能

magellan-cli の Worker 動作確認機能には、HTTP 型通信用と Publish/Subscribe 型通信用の 2 種類があります。

HTTP 型通信用の Worker 動作確認機能

HTTP 型通信用の Worker 動作確認機能は、magellan-cli http コマンドに集約されています。具体的にどのような機能があるかは、magellan-cli http help で確認することができます。

$ magellan-cli http help
Commands:
  magellan-cli http get PATH        # GETメソッドを使ってHTTPリクエストを送信します
  magellan-cli http post PATH       # POSTメソッドを使ってHTTPリクエストを送信します
  magellan-cli http put PATH        # PUTメソッドを使ってHTTPリクエストを送信します
  magellan-cli http patch PATH      # PATCHメソッドを使ってHTTPリクエストを送信します
  magellan-cli http delete PATH     # DELETEメソッドを使ってHTTPリクエストを送信します
  magellan-cli http ping            # 接続確認のリクエストを送信します
  magellan-cli http help [COMMAND]  # 利用可能なコマンドの一覧か特定のコマンドの説明を表示します

Options:
  -v, [--version], [--no-version]  # バージョンを表示します
  -V, [--verbose], [--no-verbose]  # 追加のログ情報を表示します
  -D, [--dryrun], [--no-dryrun]    # 登録や削除などのシステムには反映させずにアクションを実行します

それぞれのコマンドの詳細は、magellan-cli http help コマンド名 を使って調べることができます。

$ magellan-cli http help get
Usage:
  magellan-cli http get PATH

Options:
  -H, [--headers=HEADERS]          # JSON形式の文字列か、拡張子が.ymlのYAML形式のファイルへのパス、あるいは拡張子が.jsonのJSON形式のファイルへのパス
  -v, [--version], [--no-version]  # バージョンを表示します
  -V, [--verbose], [--no-verbose]  # 追加のログ情報を表示します
  -D, [--dryrun], [--no-dryrun]    # 登録や削除などのシステムには反映させずにアクションを実行します

GETメソッドを使ってHTTPリクエストを送信します

Publish/Subscribe 型通信用の Worker 動作確認機能

Publish/Subscribe 型通信用の Worker 動作確認機能は、magellan-cli mqtt コマンドに集約されています。具体的にどのような機能があるかは、magellan-cli mqtt help で確認することができます。

$ magellan-cli mqtt help
Commands:
  magellan-cli mqtt pub TOPIC PAYLOAD  # TOPICを指定してメッセージを配信します
  magellan-cli mqtt get [TOPIC]        # メッセージを取得します
  magellan-cli mqtt help [COMMAND]     # 利用可能なコマンドの一覧か特定のコマンドの説明を表示します

Options:
  -v, [--version], [--no-version]  # バージョンを表示します
  -V, [--verbose], [--no-verbose]  # 追加のログ情報を表示します
  -D, [--dryrun], [--no-dryrun]    # 登録や削除などのシステムには反映させずにアクションを実行します

それぞれのコマンドの詳細は、magellan-cli mqtt help コマンド名 を使って調べることができます。

$ magellan-cli mqtt help pub
Usage:
  magellan-cli mqtt pub TOPIC PAYLOAD

Options:
  -v, [--version], [--no-version]  # バージョンを表示します
  -V, [--verbose], [--no-verbose]  # 追加のログ情報を表示します
  -D, [--dryrun], [--no-dryrun]    # 登録や削除などのシステムには反映させずにアクションを実行します

TOPICを指定してメッセージを配信します

動作確認の事前準備

magellan-cli の利用にあたっては、magellan-cli login コマンドを使って、MAGELLAN にログインする必要があります。

ログイン方法は、User Management の Authentication Tokens 画面の「認証トークンの使い方」に記載されています。ターミナルに、コピー & ペーストして実行してください。

$ magellan-cli login -e youremail@example.com -t ********************
認証しました

動作確認する前に、magellan-cli info で、選択しているリソースの一覧を確認します。

$ magellan-cli info
---
user: youremail@example.com
organization: youraccount
project: DefaultProject1
stage: DefaultStage1
client_version: DefaultStage1
worker: Worker1
image: yourname/rails-worker-example:1.0.0
cloudsql: MyDB

最低限表示されるべきリソース名と値は、次のとおりです。値の部分は、実際に作成した値に読み替えてください。

リソース名 意味
organization 組織 youraccount
project プロジェクト DefaultProject1
stage ステージ DefaultStage1
client_version クライアントバージョン DefaultStage1

youraccount は、自身のMAGELLAN アカウント名に読み替えてください。

もし、異なっていた場合は、各リソースを選択するコマンドを次のとおり順に実行してください。

magellan-cli organization select youraccount
magellan-cli project select DefaultProject1
magellan-cli stage select DefaultStage1
magellan-cli client_version select DefaultStage1

HTTP 型通信の動作確認

magellan-cli http を使って、Worker の HTTP 型通信部分の動作を確認します。

まず、MAGELLAN との接続確認を行います。

$ magellan-cli http ping
pong

MAGELLAN との接続に成功すれば、pong が返ってきます。

続いて、HTTP の GET メソッドを使って、Worker(URL: /rooms)にアクセスします。

$ magellan-cli http get /rooms
[{"id":1,"name":"Room000","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"},{"id":2,"name":"Room001","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"},{"id":3,"name":"Room002","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"},{"id":4,"name":"Room003","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"},{"id":5,"name":"Room004","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"},{"id":6,"name":"Room005","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"},{"id":7,"name":"Room006","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"},{"id":8,"name":"Room007","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"},{"id":9,"name":"Room008","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"},{"id":10,"name":"Room009","created_at":"2015-08-24T23:26:32.000Z","updated_at":"2015-08-24T23:26:32.000Z"}]

ルーム一覧の JSON 形式のデータが返ってくることを確認します。

Publish/Subscribe 型通信の動作確認

まず、Worker を介さずに magellan-cli mqtt コマンドのみで、Publish と Subscribe の動作を確認します。

Worker は介しませんが、Worker が所定のプロジェクトにデプロイされている必要があります。

ターミナルを 2 つ使います。一方のターミナルで、Subscribe してトピックの配信を待ちます。もう一方のターミナルで、Publish してトピックを配信します。

magellan-cli mqtt get を使い、トピック rooms/001/me への配信を待ちます。

$ magellan-cli mqtt get rooms/001/me

別のターミナルで、magellan-cli mqtt pub を使い、トピック rooms/001/me へ、メッセージ Hello, My name is Tarou. を配信します。

$ magellan-cli mqtt pub rooms/001/me 'Hello, My name is Tarou.'
OK

magellan-cli mqtt get でトピックの配信を待ち受けていたターミナルに切り替えます。次のメッセージが表示されてコマンドが終了しています。

rooms/001/me
Hello, My name is Tarou.

magellan-cli mqtt を使った Publish/Subscribe 型通信の動作確認方法がわかったところで、実際に Worker の動作を確認します。

magellan-cli mqtt pub を使い、トピック worker/rooms/001/me で、メッセージ Hello, My name is Tarou. を配信します。

$ magellan-cli mqtt pub worker/rooms/001/me 'Hello, My name is Tarou.'
OK

今回実装した Subscriber では、配信されたトピックとメッセージをログに出力するようにしました。ログに、worker/rooms/001/me が出力されていれば成功です。

ログは、magellan-cli stage logs コマンドで確認できます。

$ magellan-cli stage logs
...
2015-08-25 08:37:52:1:Worker1_1: I, [2015-08-24T23:37:52.204303 #1]  INFO -- : topic: worker/rooms/001/me, message: Hello, My name is Tarou.

また、ログは、ステージ詳細画面の Logs タブでも確認できます。

ログの確認画面