serv-rabbitmq.md 3.5 KB

Mq服务

获取一个rabbitMQ连接

/**
 * 获取一个rabbitMQ连接
 * @Author bing
 * @DateTime 2021-02-24 10:35:37
 * @copyright: Copyright (c) 2020 广东七件事集团
 * @return AMQPStreamConnection
 * @throws Exception
 */
 $res = Yii::$app->services->rabbitMq->connect();

生产一个消息并发送到指定(direct)交换机

/**
 * 生产一个消息并发送到指定(direct)交换机
 * @Author bing
 * @DateTime 2021-02-24 15:28:47
 * @copyright: Copyright (c) 2020 广东七件事集团
 * @param string $exchange
 * @param string $queue_name  队列名称
 * @param array $data
 * @param string $handler_class
 * @param string $method
 * @param Closure $error_callback
 * @param Closure $success_callback
 * @param string $exchange_type   交换机类型:默认直连交换机
 * @throws Exception
 * @return int
 */
 $res = Yii::$app->services->rabbitMq->push($exchange,$queue_name,$data,$handler_class,$method, $error_callback, $success_callback,$exchange_type)

延时队列生产

/**
 * 延时队列生产
 * @notice:此延时队列不能保证时间的精准,当业务处理出现阻塞,则在队列里已达到过期时间的消息并不会被发送到对应的队列。
 * @Author bing
 * @DateTime 2021-02-24 16:49:31
 * @copyright: Copyright (c) 2020 广东七件事集团
 * @param int $sec 延时秒数
 * @param array $data 传递的数据
 * @param string $handler_class 处理类
 * @param string $method 处理方法
 * @param array $params 处理类参数
 * @throws Exception
 * @return void
 */
 $res = Yii::$app->services->rabbitMq->delay($sec, $data, $handler_class, $method, $params);

消费监听

/**
 * 消费者监听
 * @Author bing
 * @DateTime 2021-02-24 15:18:08
 * @copyright: Copyright (c) 2020 广东七件事集团
 * @param string  $exchange
 * @param string  $queue_name
 * @param Closure $callback
 * @param string $exchange_type   交换机类型:默认直连交换机
 * @throws Exception
 * @return void
 */
 $res = Yii::$app->services->rabbitMq->listen($exchange,$queue_name, $callback,$exchange_type); 

取出一个队列里的消息

/**
 * 取出一个队列里的消息
 * @Author bing
 * @DateTime 2021-02-27 17:19:25
 * @copyright: Copyright (c) 2020 广东七件事集团
 * @param string $queue_name 队列名称
 * @return AMQPMessage|null
 * @throws
 */
 $res = Yii::$app->services->rabbitMq->pull($queue_name); 

消息添加延时重试

/**
 * 消息添加延时重试
 * @desc 消息消费失败,加入重试队列
 * @param object  $message
 * @param string $exchange_type   交换机类型:默认直连交换机
 * @throws Exception
 * @return void
 */
 $res = Yii::$app->services->rabbitMq->retry($message,$exchange_type); 

生成MQ消息全局唯一ID

/**
 * 生成MQ消息全局唯一ID
 * @return mixed
 */
 $res = Yii::$app->services->rabbitMq->createMessageId(); 

redis设置消息信息

/**
 * redis设置消息信息
 * @param $message_id 消息ID
 * @param $data
 * @return bool
 * @throws
 */
 $res = Yii::$app->services->rabbitMq->setMessage($message_id, $data);

判断消息是否存在

/**
 * 判断消息是否存在(不存在:已消费)
 * @param $message_id 消息ID
 * @return mixed
 * @throws
 */
 $res = Yii::$app->services->rabbitMq->checkMessage($message_id);

消息消费完删除

/**
 * 消息消费完删除
 * @param $message_id 消息ID
 * @return mixed
 */
 $res = Yii::$app->services->rabbitMq->deleteMessage($message_id);