2016-03-19 13 views
0

既存のLaravelプロジェクトでは、すべてのタスクが順番に実行されます。私はPHPスレッドを使用して並列に実行できるコードの一部を特定し、応答時間を短縮することができます。既存のlaravelプロジェクト内にappserver.ioのMessageQueue機能を使用する方法

pthreadsを使用する代わりに、完全にマルチスレッドのphpサーバーであるappserver.ioを使用しないでください。 MessageQueue機能を使用して、すべてのジョブをこのキューに追加すると、自動的にワーカースレッドがフォークされます。何も管理する必要はありません。

私はすでにappserver.io(既存のLaravelアプリケーションを/opt/appserver/webapps/フォルダの下にコピーしました)に展開しましたが、今はどのようにappserverのMessageQueueを使用するのか分かりません。私のプロジェクトではpsr-4が使用されています。アプリケーションサーバーはpsr-0です。 Laravelは独自のDIを持っていますし、appserverもそうです。

私がしたいのは、より多くのワーカーが1つの機能を並行して実行するために、appserverのMessageQueueを使用することです。私はappserverに新しく、どのようにディレクトリ構造がどのように見えるか、どのような設定をしているのかわからない。任意のポインタが役立ちます。

答えて

0

あなたのLaravelアプリケーション内から接続してMessageQueueに送信することができます。まず、あなたのcomposer.jsonに「"appserver-io/messaging" : "~1.0を追加することにより、クライアントライブラリappserver-io/messagingをインストールしました。そして、あなたは

フォルダ /opt/appserver/webapps/my-laravel-appに常駐 my-laravel-appという名前のアプリケーションを、きたと仮定し
$queue = MessageQueue::createQueue('pms/myQueue'); 
$connection = QueueConnectionFactory::createQueueConnection('my-laravel-app'); 
$session = $connection->createQueueSession(); 
$sender = $session->createSender($queue); 
$sender->send(new StringMessage('Some String')); 

にメッセージを送ることができますし、 MessageQueueファイルMETA-INF/message-queues.xmlで定義され、pms/myQueueと呼ばれる。ファイルがその例で

<?xml version="1.0" encoding="UTF-8"?> 
<message-queues xmlns="http://www.appserver.io/appserver"> 
    <message-queue type="MyReceiverClass"> 
     <destination>pms/myQueue</destination> 
    </message-queue> 
</message-queues> 

ようになり、レシーバクラスMyReceiverClassはの下で利用可能でなければなりません例えば0である。

簡単なインポート機能を実行している簡単なMessageQueueの例が付属しているアプリケーションは、exampleアプリケーションが適しています。

関連する問題