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)
- fila única para os contatos
- multiplos consumers para melhorar o tps da sua aplicação
- um contato por mensagem
- configure uma fila DLQ (dead letter queue) que em caso de falha essa mensagem é direcionada para la
- utilize filas do tipo quorum, elas funcionam no formato FIFO (first in first out)
- use e abuse dos params da mensagem como correlation_id, message_id, etc
- 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)
- 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.