Our team at Spatie released new package called laravel-queuable-action. On his blog, my colleague Brent explains why we created it and how you can use it.

By introducing the concept of actions, we're able to separate responsibilities between classes better: jobs are used for data serialisation and executing tasks asynchronously; but they are not concerned with business logic anymore.