如何根据不同环境来设定是否启动 AMQP #3720
-
在使用amqp组件时我们有一个需求,在本地机上不做amqp初始化 (因为有时在家里做bug修复或是开发的时候,可能本地没有amqp环境) |
Beta Was this translation helpful? Give feedback.
Answered by
limingxinleo
Jun 21, 2021
Replies: 2 comments 1 reply
-
这个问题其实很好处理,其他任何类似的问题,都可以通过以下方式解决,让我们先创建一个监听器,监听 <?php
declare(strict_types=1);
namespace App\Listener;
use Hyperf\Amqp\Annotation\Consumer;
use Hyperf\Amqp\Annotation\Producer;
use Hyperf\Di\Annotation\AnnotationCollector;
use Hyperf\Event\Annotation\Listener;
use Hyperf\Event\Contract\ListenerInterface;
use Hyperf\Framework\Event\BootApplication;
use Psr\Container\ContainerInterface;
#[Listener]
class AMQPCheckListener implements ListenerInterface
{
/**
* @var ContainerInterface
*/
private $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function listen(): array
{
return [
BootApplication::class,
];
}
public function process(object $event)
{
$res = AnnotationCollector::getClassesByAnnotation(Producer::class);
var_dump($res);
$res = AnnotationCollector::getClassesByAnnotation(Consumer::class);
var_dump($res);
}
} 当我们启动服务时,便可以看到以下效果
所以,我们的目标便是将这两个注解相关的数据,全部去掉即可。
这样,我们在启动服务时,便不会再触发相关的 AMQP 代码了 |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
limingxinleo
-
搞定了,其它几个相关的情况也用这种方式处理了 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
这个问题其实很好处理,其他任何类似的问题,都可以通过以下方式解决,让我们先创建一个监听器,监听
BootApplication
事件,然后从注解收集器里把对应的数据打印出来。