/ / É possível que o Laravel execute um Job sem a propriedade “job” no payload? - php, laravel

É possível que o Laravel execute um Job sem a propriedade “job” no payload? - php, laravel

Estou tentando usar o Laravel para consumir tarefas de um serviço externo, usando o driver de fila RabbitMQ.

Cada carga útil de trabalho é basicamente um objeto serializado.

No entanto, parece-me que o Laravel exigejobs para ter uma propriedade chamada "job" que mapeia para um nome de classe totalmente qualificado (FQCN). Mas eu não posso fazer isso porque esses trabalhos são criados em um serviço que nem conhece meu aplicativo Laravel.

É possível eu consumir e executar um trabalho sem ter essa propriedade?

Exemplo:

É possível que o Laravel execute um trabalho contendo essa carga:

{
"fooBar": "abc-123",
"baz": false,
"bazBar": 1
}

Em vez disso:

{
"job": "Acme\\Jobs\\FooJob",
"data": {
"fooBar": "abc-123",
"baz": false,
"bazBar": 1
}
}

Respostas:

1 para resposta № 1

Não, não sem substituir alguns dos métodosdentro do despachante de tarefas do Laravel. O sistema de filas do Laravel é projetado apenas para ser usado com o Laravel, então a estrutura da carga útil na fila é o formato esperado. Se você quiser consumir o trabalho enfileirado com outro framework, terá várias opções.

1) Ignore o FQCN na carga útil do trabalho. No entanto, você estará se vinculando à estrutura da carga de trabalho do Laravel e poderá quebrar seu aplicativo se isso mudar.

2) Ignore o despachante de emprego do Laravel para mudar a estrutura de dados que ele passa para a fila. Isto parece mais complicado do que vale a pena.

3) Escreva seu próprio dispatcher de trabalho e interaja com o sistema de filas com suas próprias classes. Isso lhe dá controle total sobre como você usa a fila.