namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Jobs\ProcessPodcast;
use App\Models\Podcast;
use Illuminate\Http\Request;
class PodcastController extends Controller
{
/**
* Store a new podcast.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$podcast = Podcast::create(/* ... */);
// Create podcast...
ProcessPodcast::dispatch($podcast)->onQueue('processing');
}
}
2条答案
按热度按时间r3i60tvu1#
我从未尝试过这种方法,但应该可以
您没有指定您的项目使用什么队列连接,但是让我们假设它们使用2个不同的连接,例如2个不同的redis服务器
在您的第一个laravel项目
config/queue.php
中,向connections
添加新连接,该连接将指向第二个laravel项目的队列连接。然后,您可以使用调度到特定连接
务必确保两个项目中存在相同的作业类
ExampleJob
为了使您的工作更轻松,您应该将
$data
作为简单数组传递,避免使用SerializesModels
。如果您从项目1传递的模型在项目2中不存在,则您的作业将失败,并返回ModelNotFoundException
。您可以使用模型,但需要在两个项目中使用相同的模型k3fezbri2#
设置一个队列管理服务器,它可以从多个服务器接收作业或将作业指向队列。下面是一个简单的代码,可能会有所帮助;