在 Laravel 中使用 RabbitMQ 消息

问题描述 投票:0回答:1

我在 Laravel 应用程序中使用 https://github.com/vyuldashev/laravel-queue-rabbitmq 将消息放入 RabbitMQ 队列中,并通过

php artisan rabbitmq:consume
php artisan queue:work
在另一个 Laravel 应用程序中使用它们(并且该设置有效)。

但我不得不改用 https://github.com/ssi-anik/laravel-amqp 并且我不清楚如何使用消息 -

rabbitmq:consume
queue:work
的等效项是什么来自以前的插件?自述文件中有提供要使用的 PHP 代码的说明,但没有可以运行并保持运行状态以持续监视队列和使用消息的命令。用户是否希望创建一个自定义命令来执行此操作?

ChatGPT 坚持认为

amqp:consume
是要运行的,但会返回:

ERROR  There are no commands defined in the "amqp" namespace.

顺便说一句,我可以使用此行成功地将消息放入队列:

Amqp::connection('queuename')->publish(json_encode($mydata));

我使用的是 Laravel 9.52.10、anik/amqp 2.3 和 anik/laravel-amqp 1.4。

php laravel rabbitmq
1个回答
-1
投票

你解决了吗?因为我在代码中遇到了类似的问题:我有 2 个微服务 laravel:在第一个微服务中,我向队列发送一个如下变量:

        Queue::connection('rabbitmq')->push('App\Jobs\UpdateProductStock', $orderData);

在将收到此信息的工作中,它显示: local.ERROR:无法解析的依赖关系解析类 App\Jobs\UpdateProductStock {“异常”:“[对象] 中的 [参数 #0 [ $orderData ]] 在接收者的工作中我有:

namespace App\Jobs;

use App\Models\Product;
use Illuminate\Bus\Queueable;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Queue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Queue;
use VladimirYuldashev\LaravelQueueRabbitMQ\Queue\Connectors\RabbitMQConnector;

class UpdateProductStock implements ShouldQueue
{


    /**
     * Create a new job instance.
     */
    public $orderData;

    public function __construct($orderData)
    {
        $this->orderData = $orderData;
    }

    /**
     * Execute the job.
     */
    public function handle()
    {
        Log::info("Test job executed successfully.");

所以我知道第二个服务没有收到第一个服务发送的变量。 有什么帮助吗?

© www.soinside.com 2019 - 2024. All rights reserved.