Octobot | High Throughput Distributed Task Queue Worker
http://octobot.taco.cat/ →pageinfo

RabbitMQ とか使えるタスクワーカ、タコだし、動かしてみようと。

  cd
  git clone http://github.com/cscotta/Octobot.git

したら、

  cd Octobot/
  ant jar

で、octobot.jar 作って、

http://octobot.taco.cat/docs/octodocs-v03.pdf →pageinfo

PDF 見ながらタスク作る。

  mkdir -p com/example/tasks
  vi com/example/tasks/TacoTask.java

で、JSON 見たいので、

  package com.example.tasks;
  import org.apache.log4j.Logger;
  import org.json.simple.JSONObject;
  public class TacoTask {
    private static Logger logger = Logger.getLogger("TacoTask");
    public static void run(JSONObject task) {
      //String payload = (String) task.get("payload");
      //logger.info("OMG, GOT A TACO: " + payload);
      logger.info("OMG, GOT A TACO: " + task.toString());
    }
  }

ちょっと変えて、

  javac -cp jar/octobot.jar com/example/tasks/TacoTask.java
  jar cf tasks.jar com

コンパイルすれば tasks.jar が出来るので、あと

  vi example-config.yml

example-config.yml

  Octobot:
    queues:
      - { name: tacotruck,
          protocol: AMQP,
          host: localhost,
          port: 5672,
          vhost: /,
          priority: 5,
          workers: 1,
          #username: cilantro,
          #password: burrito
          username: guest,
          password: guest
        }
    
    metrics_port: 1228
    
    email_enabled: false
    email_from: ohai@example.com
    email_to: ohno@itsbroke.com
    email_hostname: localhost
    email_server: smtp.gmail.com
    email_port: 465
    email_ssl: true
    email_auth: true
    email_username: username
    email_password: password
    
    # startup_hook: org.example.taquito.StartupHook
    # shutdown_hook: org.example.taquito.ShutdownHook

ユーザとパスを guest に。
で、RabbitMQタスクキュー入れようとしたんだけど、
jsonrpc-channel で上手く publish できなかったので、rabbithub で。

  cd
  hg clone http://hg.rabbitmq.com/rabbitmq-public-umbrella
  make checkout
  make
  git clone http://github.com/tonyg/rabbithub.git
  make -C rabbithub all

ビルドしたら、

  sudo cp rabbithub/dist/rabbithub.ez /usr/lib/rabbitmq/lib/rabbitmq_server-2.1.0/plugins/

だけコピーすれば、他の amqp_client mochiweb rabbitmq-mochiwebjsonrpc のが有るので

  sudo /etc/init.d/rabbitmq-server restart

で動く。で、

  cd
  cd Octobot/
  ./octobot

octobot 動かして、

  curl -v -d'{"task":"com.example.tasks.TacoTask","args":"hogehogehoge"}' http://localhost:8080/rabbithub/endpoint/q/tacotruck

rabbithub からキュー入れたら、

  Launching Octobot...
  
  Options specified: -server -DconfigFile=/home/horaguchi/Octobot/example-config.yml  -Dlog4j.configuration=/home/horaguchi/Octobot/log4j.properties
  
  0    [main] WARN  Settings  - Warning - unable to load Octobot / startup_hook from configuration file.
  1    [main] WARN  Settings  - Warning - unable to load Octobot / shutdown_hook from configuration file.
  2    [main] INFO  Octobot  - Launching Introspector...
  5    [main] INFO  Octobot  - Launching Workers...
  10   [Introspector] INFO  Introspector  - Introspector launched on port: 1228
  11   [main] INFO  Octobot  - Attempting to connect to AMQP queue: tacotruck with priority 5/10 (Worker 1/1).
  12   [main] INFO  Octobot  - Octobot ready to rock!
  12   [Worker] INFO  Queue Consumer  - Opening connection to AMQP / tacotruck...
  12   [Worker] DEBUG Queue Consumer  - Attempt #1
  129  [Worker] INFO  Queue Consumer  - Connected to RabbitMQ
  13171 [Worker] INFO  TacoTask  - OMG, GOT A TACO: {"args":"hogehogehoge","task":"com.example.tasks.TacoTask"}

動いた。
octobot 2 つとか動かしてても、どっちかだけ実行するっぽい。

JSONRPCError - Internal error: badmatch - rabbitmq-discuss | Google グループ
http://groups.google.com/group/rabbitmq-discuss/browse_frm/thread/4b99da544f1f839b →pageinfo

tonyg's rabbithub at master - GitHub
http://github.com/tonyg/rabbithub →pageinfo

2010-09-26 15:20:37


※これはコメントではありません

この記事のトラックバックURL: