消息队列概述

Message Queue Framework (MQF)是一个允许模块将消息发布到队列的系统。 它还定义了将异步接收消息的消费者。 MQF使用RabbitMQ作为消息代理,该消息代理为发送和接收消息提供了一个可伸缩的平台。 它还包括用于存储未传递消息的机制。 RabbitMQ基于高级消息队列协议(AMQP) 0.9.1规范。

下图说明了Message Queue框架:

消息队列框架

  • 发布器是将消息发送到交换的组件。 它知道要发布到的交换以及它发送的报文的格式。

  • Exchange接收来自发布者的消息并将消息发送到队列。 虽然RabbitMQ支持多种类型的交换,但Commerce仅使用主题交换。 主题中包含路由密钥,路由密钥包含以点分隔的文本字符串。 主题名称的格式为string1.string2:例如,customer.createdcustomer.sent.email

    代理允许您在设置转发消息的规则时使用通配符。 您可以使用星号(*)替换​ one ​字符串,或使用井号(#)替换0个或多个字符串。 例如,customer.*将筛选customer.createcustomer.delete,但不筛选customer.sent.email。 但是customer.#将筛选customer.createcustomer.deletecustomer.sent.email

  • 队列是存储消息的缓冲区。

  • 消费者接收消息。 它知道要使用哪个队列。 它可以将消息的处理器映射到特定队列。

也可以不使用RabbitMQ设置基本消息队列系统。 在此系统中,MySQL适配器将消息存储在数据库中。 三个数据库表(queuequeue_messagequeue_message_status)管理消息队列工作负载。 CRON工作能确保消费者能够接收信息。 此解决方案不是非常可扩展。 应尽可能使用RabbitMQ。

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