2月 20, 2024 - docker, laravel, php开发    laravel微服务间传递消息已关闭评论

laravel微服务间传递消息

前提:公用一个redis

1api传递消息,弊端:当被调用的api宕机时不能恢复。

2api消息通知,弊端:麻烦

3:通过redis自带的pub/subscribe的支持来实现:劣势:pub广播后,若订阅的脚本没有正常接收处理,则丢失消息不能找回

4:可以在项目A中创建一个AJobhandle()中置空在项目中也建一个AJob且参数一样,然后queueB项目中的队列: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

评论被关闭。