123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?php
- namespace App\Console\Commands;
- use App\MicroApi\Items\UserItem;
- use App\MicroApi\Services\UserService;
- use App\Services\Broker\BrokerService;
- use Illuminate\Console\Command;
- class ProcessBrokerMessage extends Command
- {
- protected $signature = 'process:broker-message';
- protected $description = 'Subscribe and process message from micro broker';
- /**
- * @var UserService
- */
- protected $userService;
- /**
- * Create a new command instance.
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- $this->userService = resolve("microUserService");
- }
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- $broker = new BrokerService();
- $broker->subscribe('password.reset', function ($message) {
- // 解析消息数据
- $message = $message->getBody();
- $passwordReset = json_decode(base64_decode($message['Body']));
- $email = $passwordReset->email;
- $token = $passwordReset->token;
- // 发送重置邮件
- $user = $this->userService->getByEmail($email);
- if ($user) {
- $model = new UserItem();
- $model->fillAttributes($user);
- $model->sendPasswordResetNotification($token);
- $this->info('密码重置邮件已发送[email:' . $email . ']');
- } else {
- $this->error('指定用户不存在[email:' . $email . ']');
- }
- });
- $broker->wait();
- }
- }
|