2017-05-05 15 views
0

誰かがLogstashでセロリのタスクをどのように起動することができますか? 可能ですか?Logstash - RabbitMQを使ってセロリのタスクを実行する方法

私はPHPのPHP-amqplib 'を介して、ライブラリにそれが正常に動作することを実行しようとした場合:(Logstashを使用せずに)

$connection = new AMQPStreamConnection(
    'rabbitmq.local', 
    5672, 
    'guest', 
    'guest' 
); 
$channel = $connection->channel(); 
$channel->queue_declare(
    'celery', 
    false, 
    true, 
    false, 
    false 
); 
$taskId = rand(1000, 10000); 
$props = array(
    'content_type' => 'application/json', 
    'content_encoding' => 'utf-8', 
); 

$body = array(
    'task'  => 'process_next_task', 
    'lang'  => 'py', 
    'args'  => array('ktest' => 'vtest'), 
    'kwargs' => array('ktest' => 'vtest'), 
    'origin' => '@'.'mytest', 
    'id'  => $taskId, 
); 

$msg = new AMQPMessage(json_encode($body), $props); 
$channel->basic_publish($msg, 'celery', 'celery'); 

セロリのドキュメントによると:

http://docs.celeryproject.org/en/latest/internals/protocol.html

私はjson形式でリクエストを送信しようとしていますが、これはLogstashフィルタです:

ruby 
{ 
    remove_field => ['headers', '@timestamp', '@version', 'host', 'type'] 
    code => " 
     event.set('properties', 
     { 
      :content_type => 'application/json', 
      :content_encoding => 'utf-8' 
     }) 
    " 
} 

、セロリ答えは次のとおりです。

[2017-05-05 14:35:09,090: WARNING/MainProcess] Received and deleted unknown message. Wrong destination?! 
{content_type:None content_encoding:None delivery_info:{'exchange': 'celery', 'routing_key': 'celery', 'redelivered': False, 'consumer_tag': 'None4', 'delivery_tag': 66} headers={}} 

は基本的に、セロリは、私のメッセージ形式以上をデコードすることができません...私はJSON形式で要求を設定することはできませんよ:)

にです任意の手掛かりを事前にあなたに感謝し、狂気私を運転:)

はそれを忘れていた、これは情報の提供しからLogstash

rabbitmq 
      { 
       key    => "celery" 
       exchange  => "celery" 
       exchange_type => "direct" 
       user   => "${RABBITMQ_USER}" 
       password  => "${RABBITMQ_PASSWORD}" 
       host   => "${RABBITMQ_HOST}" 
       port   => "${RABBITMQ_PORT}" 
       durable   => true 
       persistent  => true 
       codec   => json 

      } 

答えて

1

の私の出力プラグインですthis questionで編集することはできません。

ruby​​フィルタでイベントをプレイしているときは、メッセージのrabbitmqヘッダーとプロパティを設定しながら、実際にメッセージの本文に何が挿入されているのかを実際に試しています。

この機能がtackledになるまで、もちろん自分で実装しない限り、達成することはできません。結局のところ、プラグインはgithubで利用可能です。

0

Olivierが言ったように、今はできませんが、私は公式プロジェクトにプルリクエストを作成しました。 https://github.com/logstash-plugins/logstash-output-rabbitmq/pull/59

あなたが作業バージョンを探しているなら、私のクローンに見てみるに:

https://github.com/useless-stuff/logstash-output-rabbitmq

あなたはそのコードについて真剣におびえなければなりません:)

私は完全に遠くによRuby開発者になる

しかし、それは動作します:)

関連する問題