!slug 1248

!date 2014/01/07

!draft false

!tags Amazon,AWS,kue,npm,redis,Simple Queue Service,Simple Workflow Service,SQS,SWF

!! あけましておめでとうございます。 ちょっと最近、前回のアプリも含めて様々な構成のシステムを連携させて動かすことが多くなってきたので、そういうのを綺麗に管理する手法?っぽいものを模索してました。 結果的にAWSのSWF(Simple Workflow Service)で移行という結論になったのですが、金のかからない方…

あけましておめでとうございます。

ちょっと最近、前回のアプリも含めて様々な構成のシステムを連携させて動かすことが多くなってきたので、そういうのを綺麗に管理する手法?っぽいものを模索してました。

結果的にAWSのSWF(Simple Workflow Service)で移行という結論になったのですが、金のかからない方法としてnpmパッケージのkueも試したので今回の記事ではkueについてまとめます(SWFは多分ウフル技術ブログでやります)

kueはひとつの処理を「job」と呼んでいて、このjobをredisに保存して管理するようです。ですのでredisが使える環境で試しますが、redis自体のインストールなどは割愛します。

まず、kueアプリ用のディレクトリを作成してkueをインストールします。

$ mkdir kue-sample
$ cd kue-sample
$ npm install kue```

次に最もシンプルな状態で起動させます。

$ vi app.js var kue = require(‘kue’); kue.app.listen(3000); $ node app.js```

この状態でブラウザでlocalhost:3000にアクセスしてみると以下のような画面が表示されます。多分これjobの管理画面でjobを突っ込んだりするとココに表示されるんでしょうね。

http://farm8.staticflickr.com/7315/11793992794_a27c2baed7.jpg

あとはAPIでjobの登録や抽出を以下のようにして行います。

jobの登録。

$ curl -H "Content-Type: application/json" -X POST -d     '{
       "type": "email",
       "data": {
         "title": "welcome email for tj",
         "to": "[email protected]",
         "template": "welcome-email"
       },
       "options" : {
         "attempts": 5,
         "priority": "high"
       }
     }' <http://localhost:3000/job>

以下のようなレスポンスがあってjobが登録されます。管理画面で確認できます。

{
  "message": "job created",
  "id": 1
}

jobの抽出。