2014-07-08 119 views
2

我開始看到Iron.io作爲我的隊列過程的服務。隨着laravel的輕鬆設置,我可以在幾分鐘內完成工作,但有些東西對我來說並不明確。Laravel 4和Iron.io多個隊列/ PHP

我訂閱一個使用工匠命令,以下稱爲resizer新的隊列:

php artisan queue:subscribe resizer http://mywebsite.com/queue/resizer 

在設置在queue.php文件我已經給在這種情況下創建的隊列的關鍵queue名稱resizer

'iron' => array(
      'driver' => 'iron', 
      'host' => 'mq-aws-us-east-1.iron.io', 
      'token' => 'xxxxxx', 
      'project' => 'xxxx', 
      'queue' => 'resizer', 
      'encrypt' => true, 
     ), 

但是肯定會有其他種類的隊列。此調整器隊列負責調整圖像大小,但我將不得不另外設置一個用於發送email或許稱爲email

現在我們假設我想實現email隊列,並且還有resizer以及我認爲只需訂閱另一個服務。

php artisan queue:subscribe email http://mywebsite.com/queue/email 

我的路線:

Route::post('queue/resizer', function() 
{ 
    Queue::marshal(); 
}); 

Route::post('queue/email', function() 
{ 
    Queue::marshal(); 
}); 

問題:

當我打的路線queue/email Iron.io火resizer代替email過程中添加1更多的消息,該消息隊列,因爲上我設置的設置爲resizer。 那麼我怎麼能有不同的任務/隊列分配給Iron.io每個不同的需求?

回答

3

可以使用pushRaw功能

pushRaw($payload, $queue = null, array $options = array())

例子:

Queue::pushRaw("This is Hello World payload", "email");

+0

謝謝你這樣回答,你能成爲一個更具體一點吧。我從來沒有使用過這種方法,它需要在路由上使用,而不是'Queue :: marshal()'?這個方法是什麼? – Fabrizio

+2

'marshal'方法將負責發射正確的作業處理器類。要將作業激發到推送隊列,只需使用與傳統隊列相同的'Queue :: push'方法或'Queue :: pushRaw'將消息推送到特定隊列即可。 – freeman1988