Laravel Multi Tenant Multi Database
Fiz o Curso Laravel Multi Tenant Multi Database, ficou show de bola minha aplicação, mas não consegui resolver a questão dos comandos Schedule:run e também a questão das Queue:work no supervisor, alguém pode me ajudar?
Olá, Luciano!
Tudo bem?
Parabéns pela disciplina amigo.
Para as filas você pode usar o SQS da Amazon (é ótimo e gratuito para rodar até 1M de filas, é fila pkct).
Ou, também pode rodar em memória com o redis. É importante não trabalhar com database, porque nesse seria necessário muitas configurações e rodar as filas por tenant.
Agora sobre Task Scheduling, você pode setar a conexão direto no model, e salvar os dados no banco principal.
Pegou a ideia amigo?
Obrigado, eu já ia usar Redis, eu ia usar um container só para rodar as filas, dessa forma vou conseguir rodar tudo?
sobre Task Scheduling, o que eu entendi é que o sistema principal que vai executar tudo, no caso de notificações ele vai acessar banco por banco e notificar cada cliente, é isso?
tem como postar algum exemplo?
Desde já agradeço o suporte, e aguardo ancioso o novo curso Laravel para Senior
Olá, Luciano!
Sim, pode subir um container para o redis.
O que pretende fazer exatamente com Task Scheduling?
Porque se precisa rodar tasks especificas para cada tenant precisa definir nas tabelas dos tenants, e rodar de forma personalizada (igual fizemos com os migrations) para mudar a conexão antes.
Bom dia,
cadastrei o aws sqs para testar, ele está enviando as queues para o sqs mas não está executando, acho que estou errando no arquivo no job, pois quando eu seto o QUEUE_CONNECTION=sync , ele funciona perfeitamanete, ele cria um departamento em cada tenant.
Eu criei um arquivo Job para testes, veja:
Olá, Luciano!
Se processou com o modo sync o job está certo.
No painel da Amazon, tem algum registro de erro?
E nos logs da sua aplicação?
Nenhum erro, nem na AWS mas no terminal retornou os erros abaixo.
Eu percebei, que se eu abrir o terminal e digitar php artisan schedule:run e na sequencia php artisan queue:work ele funciona perfeitamente, mas se eu deixar o cron rodar sozinho, ele envia a job para a AWS SQS, mas não processa dando erro
[2020-04-07 12:41:03][5e35ed1f-30a5-48cc-975a-4a8485341b18] Failed: App\Jobs\Tenant\TesteJob,
percebi também que lá na AWS SQS não tem alguma referencia em qual bando deve ser executado, talvez ele está tentando executar no banco principal
segue os dados do terminal
root@803c31dac25d:/var/www# php artisan schedule:run
Running scheduled command: Closure
Running scheduled command: App\Jobs\Tenant\TesteJob
root@803c31dac25d:/var/www# php artisan queue:work
[2020-04-07 12:40:16][8ce2a568-b532-4c58-89e4-e35dbbb79a6e] Processing: App\Jobs\Tenant\TesteJob
[2020-04-07 12:40:17][8ce2a568-b532-4c58-89e4-e35dbbb79a6e] Processed: App\Jobs\Tenant\TesteJob
[2020-04-07 12:41:02][5e35ed1f-30a5-48cc-975a-4a8485341b18] Processing: App\Jobs\Tenant\TesteJob
[2020-04-07 12:41:03][5e35ed1f-30a5-48cc-975a-4a8485341b18] Failed: App\Jobs\Tenant\TesteJob
[2020-04-07 12:42:05][9edf2372-69da-438c-957d-b2d794a2d361] Processing: App\Jobs\Tenant\TesteJob
[2020-04-07 12:42:05][9edf2372-69da-438c-957d-b2d794a2d361] Failed: App\Jobs\Tenant\TesteJob
[2020-04-07 12:43:04][25373183-06ce-456d-94cb-72058e23eb0c] Processing: App\Jobs\Tenant\TesteJob
[2020-04-07 12:43:05][25373183-06ce-456d-94cb-72058e23eb0c] Failed: App\Jobs\Tenant\TesteJob
Precisa conferir nos logs da sua aplicação qual é o erro retornado (em storage/logs/)
Por default o comando vai conectar a base principal... se quiser que rode conectado na base dos clientes é algo mais complexo, nesse caso talvez seria mais interessante centralizar tudo em um único local (banco principal), ou talvez até rodar as filas por tenant.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!