兩個Laravel專案透過Redis queue傳遞Job

最近在做兩個專案,他們有父子關係,其中子專案在註冊會員後,需要丟 job 給 父專案執行

雖然兩個專案使用同一台 redis 作為 queue,但 laravel 預設會把 job 存在 redis 中下面這個 key 的位置:

env(‘REDIS_PREFIX’, Str::slug(env(‘APP_NAME’, ‘laravel’), ‘_’).’_database_’)

// APP_NAME=laravel
// output => laravel_database_queue

可以看到想讓兩個專案真正讀取同一個 queue,就必須在 .env 裡面自訂 REDIS_PREFIX

接著,父子專案還要建立相同名稱的 job(ex: App\Jobs\TestJob),然後由子專案 dispatch job,由父專案執行 php artisan queue:work


當然父跟子沒有絕對,要不要寫 dispatch()->onQueue() 也沒有絕對

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *