如何在现有 laravel 项目中使用 appserver.io 的 MessageQueue 功能
How to use MessageQueue feature of appserver.io inside existing laravel project
我现有的 Laravel 项目是这样的,所有任务都是按顺序执行的。我已经确定了部分代码可以 运行 并行使用 PHP
线程并且可以减少响应时间。
没有使用 pthreads
,有人建议为什么不使用 appserver.io - 这是完全多线程的 php
服务器本身。可以使用它的 MessageQueue
特性,将你所有的作业添加到这个队列中,它会自动派生工作线程。您无需管理任何事情。
我已经在 appserver.io 上部署了现有的 Laravel 应用程序(在 /opt/appserver/webapps/
文件夹下复制的项目),但现在我不知道如何使用应用程序服务器的 MessageQueue
。我的项目使用 psr-4
,而 appserver 是 psr-0
。 Laravel 有自己的 DI,appserver 也有。
我只想使用应用程序服务器的 MessageQueue
让更多的工作人员并行执行一个功能。我是 appserver 的新手,不确定目录结构应该是什么样子或者我有什么配置。任何指针都会有所帮助。
您可以从 Laravel 应用程序连接并发送到 MessageQueue
。首先,您必须通过将 "appserver-io/messaging" : "~1.0
" 添加到 composer.json 来安装客户端库 appserver-io/messaging
。然后您可以使用
发送消息
$queue = MessageQueue::createQueue('pms/myQueue');
$connection = QueueConnectionFactory::createQueueConnection('my-laravel-app');
$session = $connection->createQueueSession();
$sender = $session->createSender($queue);
$sender->send(new StringMessage('Some String'));
假设您有一个名为 my-laravel-app
的应用程序,它驻留在文件夹 /opt/appserver/webapps/my-laravel-app
中,还有一个名为 pms/myQueue
的 MessageQueue
,在文件 [=19= 中定义].该文件看起来像
<?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>
在该示例中,接收器 class MyReceiverClass
必须在 /opt/appserver/webapps/my-laravel-app/META-INF/classes/MyLaravelApp/Receivers/MyReceiverClass
下可用。
一个好的开始是 example 应用程序,它带有简单的 MessageQueue
示例 运行 一些简单的导入功能。
我现有的 Laravel 项目是这样的,所有任务都是按顺序执行的。我已经确定了部分代码可以 运行 并行使用 PHP
线程并且可以减少响应时间。
没有使用 pthreads
,有人建议为什么不使用 appserver.io - 这是完全多线程的 php
服务器本身。可以使用它的 MessageQueue
特性,将你所有的作业添加到这个队列中,它会自动派生工作线程。您无需管理任何事情。
我已经在 appserver.io 上部署了现有的 Laravel 应用程序(在 /opt/appserver/webapps/
文件夹下复制的项目),但现在我不知道如何使用应用程序服务器的 MessageQueue
。我的项目使用 psr-4
,而 appserver 是 psr-0
。 Laravel 有自己的 DI,appserver 也有。
我只想使用应用程序服务器的 MessageQueue
让更多的工作人员并行执行一个功能。我是 appserver 的新手,不确定目录结构应该是什么样子或者我有什么配置。任何指针都会有所帮助。
您可以从 Laravel 应用程序连接并发送到 MessageQueue
。首先,您必须通过将 "appserver-io/messaging" : "~1.0
" 添加到 composer.json 来安装客户端库 appserver-io/messaging
。然后您可以使用
$queue = MessageQueue::createQueue('pms/myQueue');
$connection = QueueConnectionFactory::createQueueConnection('my-laravel-app');
$session = $connection->createQueueSession();
$sender = $session->createSender($queue);
$sender->send(new StringMessage('Some String'));
假设您有一个名为 my-laravel-app
的应用程序,它驻留在文件夹 /opt/appserver/webapps/my-laravel-app
中,还有一个名为 pms/myQueue
的 MessageQueue
,在文件 [=19= 中定义].该文件看起来像
<?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>
在该示例中,接收器 class MyReceiverClass
必须在 /opt/appserver/webapps/my-laravel-app/META-INF/classes/MyLaravelApp/Receivers/MyReceiverClass
下可用。
一个好的开始是 example 应用程序,它带有简单的 MessageQueue
示例 运行 一些简单的导入功能。