安装
php bin/hyperf.php hcms:install message
定义消息
我们将所有的消息定义放在 App\Application\Message\Message
- 属性:可以将消息已经确定属性在
SimpleMessage
定义的时候就确认,例如 $target_type 消息来源类型、$receiver_type 接收者类型。提前定义好这些属性,在创建消息的时候就不需要再次赋值。 - 发送器:一条消息可以对应多个发送器执行发送。 ```php <?php declare(strict_types=1);
namespace App\Application\Message\Message;
class SimpleMessage extends AbstractMessage { protected string $target_type = ‘simple_id’; protected string $receiver_type = ‘user_id’; protected string $sender_type = ‘send_id’; protected string $title = ‘简单消息通知’;
function getSenders(): array { //返回对应的发送器 return [ SimpleMessageWxSender::class, ]; } }
<a name="wLpwG"></a>
## 创建消息
在特定的触发场景创建对应的消息,因为定义消息的时候提前确定一些消息属性,随意创建消息的时候只需要对特定属性赋值就可以。
```php
public function createMessage()
{
$message = new SimpleMessage();
$res = $message->setContent('创建一条简单的消息通知')
->setReceiver(1)
->setSender(2)
->setTarget(3)
->createMessage();
return $res ? $this->returnSuccessJson() : $this->returnErrorJson();
}
消息发送器
发送器就是用来执行消息发送操作,因为一个通知消息可以对应多种发送行为,例如银行支付通知,可以发送微信公众号、短信、邮箱等。
发送器需要在消息定义时在 getSenders
中返回。
function getSenders(): array
{
return [
SimpleMessageWxSender::class,
SimpleMessageErrorSender::class,
SimpleMessageSmsSender::class
];
}
消息发送
每个消息创建成功后,都会创建一个队列任务(MessageProcessJob
)执行。这个队列任务就是执行此消息的发送操作。