安装
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>## 创建消息在特定的触发场景创建对应的消息,因为定义消息的时候提前确定一些消息属性,随意创建消息的时候只需要对特定属性赋值就可以。```phppublic 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)执行。这个队列任务就是执行此消息的发送操作。
