98 lines
1.9 KiB
Markdown
98 lines
1.9 KiB
Markdown
# rocket-mq-thinkphp 适配客户端
|
||
|
||
## 使用说明
|
||
本客户端对接公司mq,实现mq消息推送与订阅,目前支持一对一与一对多订阅!
|
||
|
||
### 安装
|
||
|
||
1. 添加镜像地址
|
||
```shell
|
||
{
|
||
"repositories": [{
|
||
"type": "composer",
|
||
"url": "http://composer.saas.test.tianmagroup.com"
|
||
}]
|
||
}
|
||
|
||
```
|
||
2. composer安装
|
||
```shell
|
||
composer require tm_xls/rocket-mq-client-thinkphp
|
||
```
|
||
|
||
|
||
### 配置
|
||
```php
|
||
|
||
|
||
return [
|
||
'host' => env('mq_host', 'http://192.168.21.170:8085'), //mq地址
|
||
'callback_host' => env('mq_callback_host', 'http://192.168.21.170:8085'),//回调host
|
||
'callback' => '/rocketmq/producer/notify',//回调地址默认不做修改
|
||
//订阅节点
|
||
'subscribe' => [
|
||
|
||
]
|
||
];
|
||
|
||
```
|
||
|
||
### 生产者
|
||
见example "Producer"
|
||
|
||
### 消费者
|
||
消费者执行逻辑由开发者定义,但是仍遵循如下规则:
|
||
1. 首先在config/rocket_mq.php 文件subscribe节点配置订阅
|
||
```php
|
||
return [
|
||
'subscribe' => [
|
||
//节点配置 由mq的topic.tag为标识
|
||
'[topic].[tag]' => [
|
||
Test:class
|
||
]
|
||
]
|
||
]
|
||
|
||
```
|
||
2. `Test:class` 需要实现 `tm\xls\rocketMq\thinkphp\consumer\contract\ListenerInterface` 接口
|
||
|
||
```php
|
||
|
||
|
||
namespace example;
|
||
|
||
|
||
use tm\xls\rocketMq\thinkphp\consumer\contract\ListenerInterface;
|
||
use tm\xls\rocketMq\thinkphp\consumer\message\Message;
|
||
|
||
class Consumer implements ListenerInterface
|
||
{
|
||
|
||
private $message;
|
||
|
||
/**
|
||
* 所有订阅监听会自动注入 tm\xls\rocketMq\thinkphp\consumer\message\Message 对象
|
||
*
|
||
* @param Message $message
|
||
*/
|
||
public function __construct(Message $message)
|
||
{
|
||
$this->message = $message;
|
||
}
|
||
|
||
public function handle()
|
||
{
|
||
//队列消息
|
||
$this->message;
|
||
//处理订阅逻辑
|
||
// code ...
|
||
}
|
||
|
||
public function enable(): bool
|
||
{
|
||
// 这边判断是否执行
|
||
return true;
|
||
}
|
||
}
|
||
|
||
``` |