确定消息只投递了一次
<?php
namespace app\queue\redis;
use Webman\RedisQueue\Consumer;
class MyMailSend implements Consumer
{
// 要消费的队列名
public $queue = 'test_send_mail';
// 连接名,对应 config/redis_queue.php 里的连接`
public $connection = 'default';
// 消费
public function consume($data)
{
var_dump('consume => '.date('Y-m-d H:i:s'));
// 无需反序列化
var_export($data); // 输出 ['to' => 'tom@gmail.com', 'content' => 'hello']
}
}
'redis_consumer' => [
'handler' => Webman\RedisQueue\Process\Consumer::class,
'count' => 1, // 可以设置多进程
'constructor' => [
// 消费者类目录
'consumer_dir' => app_path() . '/queue/redis'
]
]
string(30) "consume => 2021-12-17 16:36:20"
array (
'to' => 'tom@gmail.com',
'content' => 'hello',
'time' => '2021-12-17 16:36:20',
)string(30) "consume => 2021-12-17 16:37:20"
array (
'to' => 'tom@gmail.com',
'content' => 'hello',
'time' => '2021-12-17 16:36:20',
)
另外同时清教一下:'count' => 1, // 可以设置多进程,这个设置多个是不是意味消息处理速度会更快?消息不会被重复在不同进程出现吧?
多进程处理速度会更快,不会重复处理。
明白了,感谢
消费被触发说明某个地方有投递消息。具体哪个地方需要自己找下
哦哦,明白了,是你的 文档里 demo 代码投递了两次