Executando verificação de segurança...
Em resposta a RabbitMQ em um SaaS
4

Fala meu amigo tudo bem?

Hoje trabalho num sistema de mensageria que usa amplamente o RabbitMQ e dado o seu cenário eu posso te dar aqui algumas orientações supondo que a sua aplicação funciona em multitenancy (umuma única aplicação para varios usuarios, enfim, um saas rs)

  1. fila única para os contatos
  2. multiplos consumers para melhorar o tps da sua aplicação
  3. um contato por mensagem
  4. configure uma fila DLQ (dead letter queue) que em caso de falha essa mensagem é direcionada para la
  5. utilize filas do tipo quorum, elas funcionam no formato FIFO (first in first out)
  6. use e abuse dos params da mensagem como correlation_id, message_id, etc
  7. se você precisar de algo realtime utilize websocket (socket.io por exemplo) para mandar as mensagens ao usuário e deixe o rabbitmq para processar os dados no backend (add no banco de dados, parsers, etc)
  8. se optar por filas individuais opte por filas que se auto deletam pq o rabbitmq fica extremamente lento quando há muitas filas

por fim tenha em mente que o rabbitmq é um message broker e a função dele é simplesmente entregar a mensagem que você posta nele a um consumidor que irá trabalhar os dados da mensagem de forma assincrona.

Carregando publicação patrocinada...
1

Muito obrigado pelas suas instruções, são de grande ajuda sem dúvidas. Então está me falando que seria apenas uma fila (por exemplo a de contatos) para todas empresas, isso?

Atualmente estou utilizando socket.io mesmo. Antes de enviar pra fila eu mando o contato via socket pro client e após isso é enviado pra fila.

2

exatamente!

assim você controla o fluxo de atualização no banco de dados a partir da quantidade de consumers e fica muito mais fácil a manutenção

1

Agradeço a resposta.
Sobre a questão do envio de mensagem, mantenho apenas uma fila pra todas empresas também?
E outra, nesse caso das mensagens, é normal utilizar fila tanto pra receber quanto pra enviar?