Visão geral das filas de mensagens

O Message Queue Framework (MQF) é um sistema que permite que um módulo publique mensagens em filas. Define também o consumidores que receberá as mensagens de forma assíncrona. O MQF utiliza 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 do protocolo AMQP 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 RabbitMQ O oferece 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 para 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 um sequência de caracteres ou um sinal de libra (#) para substituir 0 ou mais strings. 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 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) gerenciar 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 utilizada sempre que possível.

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