laravel queue Bus::batch 问题

laravel queue  Bus::batch 问题

如果当前批次执行 job 没有使用aftercommit的话 就会报这个错误 说redis管道不能和事务一起用
用aftercommit没报错的原因是在当前里面没有去连接redis执行 因为都使用了aftercommit 不会在当前这个里面执行

laravel queue  Bus::batch 问题

laravel queue  Bus::batch 问题

用 aftercommit 的话 我批次就感觉就没有意义了 因为 用aftercommit的话 最后还是一笔笔的丢入到队列里面去的 不像这个管道一次连接丢过去的
有大佬碰到过这个问题吗

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

找到問題了
當queue用horizon的時候 是同一個實例 同一個實例就會出現管道嵌套 不同實例連接可以進行管道嵌套 同一個實例連接不能進行管道嵌套

因為horizon監聽了任務 push後 就會觸發事件 那個時間裡面也是一個管道 所以就會報這個Can’t activate pipeline in multi mode! 其實這個意思不是說管道嵌套事務 是管道嵌套了事務 事務裡面由嵌入了同一個實例連接的管道

因為我 在database.php的redis配置新增了一個 key是horizon的配置 然後horizon也是使用的這個配置(動態配置)
所以queue和horizon就是一個實例 只要在database.php的redis配置裡面不要新增key是horizon就可以了
file

file

以下是測試上述問題

Laravel
Laravel

1年前 评论
讨论数量: 2

有大佬碰到过这个问题吗

2年前 评论

找到問題了
當queue用horizon的時候 是同一個實例 同一個實例就會出現管道嵌套 不同實例連接可以進行管道嵌套 同一個實例連接不能進行管道嵌套

因為horizon監聽了任務 push後 就會觸發事件 那個時間裡面也是一個管道 所以就會報這個Can’t activate pipeline in multi mode! 其實這個意思不是說管道嵌套事務 是管道嵌套了事務 事務裡面由嵌入了同一個實例連接的管道

因為我 在database.php的redis配置新增了一個 key是horizon的配置 然後horizon也是使用的這個配置(動態配置)
所以queue和horizon就是一個實例 只要在database.php的redis配置裡面不要新增key是horizon就可以了
file

file

以下是測試上述問題

Laravel
Laravel

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!