laravel微服务间传递消息
前提:公用一个redis
1:api传递消息,弊端:当被调用的api宕机时不能恢复。
2:api消息通知,弊端:麻烦
3:通过redis自带的pub/subscribe的支持来实现:劣势:pub广播后,若订阅的脚本没有正常接收处理,则丢失消息不能找回
4:可以在项目A中创建一个AJob其handle()中置空在项目中也建一个AJob且参数一样,然后queue到B项目中的队列:B_default
4_1:项目A中创建重复的AJob,劣势;job重复。ImportOrgDataJob::dispatch()->onQueue(‘statistics_default’);
参考链接:https://learnku.com/articles/41907
4_2:项目A中不创建AJob,通过手动字符串push job:Queue::push(‘App\Jobs\UsageStatistics\ImportOrgDataJob@handle’, [‘data1’ => ‘ddd’], ‘statistics_default’);劣势1:需要手动清除redis中执行过的job,否则可能会重复执行Job
劣势2:构造函数必须置空,传参必须通过handel($job, $data)来获取,
优势:在项目A中不用重复写AJob
链接:https://zhuanlan.zhihu.com/p/93775446?utm_id=03