Visão geral das filas de mensagens

O Message Queue Framework (MQF) é um sistema que permite que um módulo publique mensagens em filas. Também define os consumidores que receberão as mensagens de forma assíncrona. O MQF usa RabbitMQ como o agente de mensagens, que fornece uma plataforma escalável para enviar e receber mensagens. Também inclui um mecanismo para armazenar mensagens não entregues. RabbitMQ é baseado na especificação AMQP (Advanced Message Queuing Protocol) 0.9.1.

O diagrama a seguir ilustra a Estrutura da fila de mensagens:

Estrutura da Fila de Mensagens

  • Um editor é um componente que envia mensagens para uma troca. Ele sabe para qual troca publicar e o formato das mensagens enviadas.

  • Um Exchange recebe mensagens de editores e as envia para filas. Embora o RabbitMQ ofereça suporte a vários tipos de trocas, o Commerce usa somente trocas de tópicos. Um tópico inclui uma chave de roteamento, que contém strings de texto separadas por pontos. O formato de um nome de tópico é string1.string2: por exemplo, customer.created ou customer.sent.email.

    O broker permite usar curingas ao definir regras para o encaminhamento de mensagens. Você pode usar um asterisco (*) para substituir uma cadeia de caracteres ou um sinal de libra (#) para substituir 0 ou mais cadeias de caracteres. Por exemplo, customer.* filtraria em customer.create e customer.delete, mas não customer.sent.email. No entanto, customer.# filtraria em customer.create, customer.delete e customer.sent.email.

  • Uma fila é um buffer que armazena mensagens.

  • Um consumidor recebe mensagens. Ele sabe qual fila consumir. Ele pode mapear processadores da mensagem para uma fila específica.

Um sistema básico de fila de mensagens também pode ser configurado sem usar o RabbitMQ. Neste sistema, um adaptador MySQL armazena mensagens no banco de dados. Três tabelas de banco de dados (queue, queue_message e queue_message_status) gerenciam a carga de trabalho da fila de mensagens. Os trabalhos da Cron garantem que os consumidores possam receber mensagens. Essa solução não é muito escalável. RabbitMQ deve ser usado sempre que possível.

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c