背景:
我在学习RabbitMq的时候,根据某个教程,分别创建了一个Sending发送接口和一个Receiving接收接口,但是因为我是在laravel中直接新建的控制器中写的发送和接收接口,所以在需要运行Receive接收接口时,就遇到了一个问题,那就是我在命令行中不能直接运行Receive接收接口进行监听;
大致是这样的,教程上说需要运行相关文件;
而我写的结构是这样的:
所以现在的需求就是我想在命令行中运行receive接口进行监听的动作,根据这一需求我在网上查了一下,发现laravel中的artisan是可以让我们自己创建命令的,在Laravel文档中有更加详细的使用说明,我这里就只是解决我上面的问题进行记录,方便以后查阅。
具体:
首先生成了一个命令文件,该条命令文件会在app/Console/Commands路径下生成一个RmqCommand.php文件
php artisan make:command RmqCommand
该方法中有两个属性signature 和 description,和一个方法handle:
signature: 命令名称及签名(该命令中还可以带参数)
description: 命令描述
handle: 执行命令时会调用该方法
下面是我RmqCommand.php文件中的部分代码,我是直接在handle方法中调用了receive方法;
···
protected $signature = 'rmq:receive';
···
public function handle()
{
$obj = new RabbitMqController();
$obj->receive();
}
···
随后使用刚刚生成的命令查看是否生效:
php artisan rmq:receive
看来是成功了,随后send方法中发送一条信息,看一下是否有监听:
这里看到是可以监听到的,没什么问题,至此算是解决了自己的一个小需求。
这里自己定义命令貌似在业务中会经常用到,这里也算是自己小小的记录一下
相关链接:
https://learnku.com/articles/9115/rabbitmq-introduction-hello-world
https://learnku.com/docs/laravel/7.x/artisan/7480#writing-commands