二,rabbitmq配置
生成配置文件 php bin/hyperf.php vendor:publish hyperf/amqp
并修改配置文件,这里的AMQP_HOST 就是lnmp_default 网络组中 rabbitmq的ip地址,可使用docker inspect rabbit
查看,端口即为容器内部映射ip这里默认是5672
三,测试代码
php bin/hyperf.php gen:amqp-producer DemoProducer
- 生产者
<?php
declare(strict_types=1);
namespace App\Amqp\Producer;
use Hyperf\Amqp\Annotation\Producer;
use Hyperf\Amqp\Message\ProducerMessage;
use function Hyperf\Coroutine\co;
//routingKey是指定路由到哪里,可以决定到哪个队列。队列通过路由键绑定到交换器
#[Producer(exchange: 'hyperf', routingKey: 'hyperf-queue.sj')]
//生产者方指定了exchange(交换机)和routing key,但是不指定queue(队列)也不将queue(队列)绑定到exchange,
//队列声明和绑定队列到exchange的工作由消费者方完成
//费者在消费消息时,需要声明队列(队列名字随便),并将声明的队列通过routing key绑定到exchange,这样才能接收到数据
class DemoProducer extends ProducerMessage
{
public function \_\_construct($id)
{
$pdata['id']=$id;
$pdata['time']=date("Y-m-d H:i:s",time());
$pdata['name']=array\_rand(['张三','李四','王虎','陆风','牛犇','冯晨','丁酉','郑和']);;
$pdata['say']=bin2hex(random\_bytes(10));
$pdata['score']=array\_rand(['61','80','75','77','99','88','97','81']);
$this->payload = $pdata;
}
}
- 消费者
<?php
declare(strict_types=1);
namespace App\Amqp\Consumer;
use Hyperf\Amqp\Result;
use Hyperf\Amqp\Annotation\Consumer;
use Hyperf\Amqp\Message\ConsumerMessage;
use PhpAmqpLib\Message\AMQPMessage;
#[Consumer(exchange: 'hyperf', routingKey: 'hyperf-queue.sj', queue: 'hyperf', name: "DemoConsumer", nums: 1)]
class DemoConsumer extends ConsumerMessage
{
public function consumeMessage($data, AMQPMessage $message): Result
{
print\_r($data);
return Result::ACK;
}
}
- 控制器
public function productMessage()
{
try {
//这里使用协程创建100条消息
$wg = new \Hyperf\Coroutine\WaitGroup();
$wg->add(100);
for($i=0;$i<100;$i++){
//创建协程
co(function () use ($wg){
$message=new DemoProducer(1);
//获取一个生产者实例
$producer = ApplicationContext::getContainer()->get(Producer::class);
//传递消息
$producer->produce($message);
$wg->done();
});
}
$wg->wait();
} catch (\Exception $exception) {
throw new \Swoole\Exception($exception->getMessage());
}
return [
'info' => "100条消息创建成功",
];
}
保存后重启服务 php hyperf.php start
,定义的消费者会自动消费,详见文档。
ps:这里有个小问题时间不对。这里实际上在composer hyperf的时候第一步就是可以设置时区Asia/Shanghai
都是我没设置,现在可以偷个懒在入口文件添加 date_default_timezone_set(‘Asia/Shanghai’); 即可。(或修改php.ini)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
获取)**
[外链图片转存中…(img-DWsaSmWs-1712956146758)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!