Как использовать функцию MessageQueue в appserver.io внутри существующего проекта laravel

Мой существующий проект Laravel таков, что все задачи выполняются последовательно. Я определил часть кода, которая может быть запущена параллельно, используя PHP темы и может сократить время отклика.

Вместо того, чтобы использовать pthreads, было высказано предположение, что почему бы не использовать appserver.io — полностью многопоточный php сам сервер. Можно использовать его MessageQueue добавьте всю свою работу в эту очередь, и она автоматически разветвляет рабочие потоки. Вам не нужно ничего управлять.

Я уже развернул существующее приложение Laravel на appserver.io (скопированный проект /opt/appserver/webapps/ папку), но теперь я не знаю, как использовать сервер приложений MessageQueue, Мой проект использует psr-4где appserver есть psr-0, У Laravel есть собственный DI и так же appserver.

Все, что я хочу сделать, это использовать appserver’s MessageQueue чтобы больше работников выполняли одну функцию параллельно. Я новичок в appserver и не уверен, как должна выглядеть структура каталогов или какая у меня конфигурация. Любые указатели будут полезны.

0

Решение

Вы можете подключиться и отправить на MessageQueue из вашего приложения Laravel. Сначала вы должны установить клиентскую библиотеку appserver-io/messaging добавляя "appserver-io/messaging" : "~1.0«на ваш composer.json. Затем вы можете отправить сообщение с

$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 и MessageQueue называется pms/myQueue, определенный в файле META-INF/message-queues.xml, Файл будет выглядеть так

<?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 должен быть доступен под /opt/appserver/webapps/my-laravel-app/META-INF/classes/MyLaravelApp/Receivers/MyReceiverClass например.

Хорошее начало пример приложение, которое поставляется с простым MessageQueue пример запуска некоторой простой функциональности импорта.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]