事件流图
PubSub+根据事件从生产者到消费者移动时所需的服务质量(QoS)(由生产者定义),将传入事件分为两个不同的流。这些非持久事件流和持久事件流使用不同的路径处理事件。以下部分展示了事件的处理过程。
非持久事件流
非持久事件是短暂的。这些事件为消费者提供了一种QoS,其中消息丢失是可以接受的,并使用一种设计模式,即消费者仅从连接开始时接收消息。这允许极高的吞吐量和超低延迟,作为与持久性权衡的结果。这种QoS也常用于市场数据等应用程序中的请求-回复或发布-订阅的消息交换模式。
消息到达锚
当事件消息到 达代理,并且Delivery Mode
设置为Direct
时,消息会被放置在非持久事件流的尾部。
消费消息锚
非持久消费者根据订阅主题吸引消息,从非持久事件流中接收消息。当新的事件消息到达代理时,如果它们与客户端的订阅请求相符,它们会被放置在消费者的出口队列中。
消息优先级锚
每个Direct
消息都被分配了优先级。消费者的出口队列确保更高优先级的Direct
消息在较低优先级之前处理。相同优先级的消息按照它们到达代理的顺序处理。
非持久事件处理锚
在下图中,您可以跟踪非持久事件是如何被PubSub+事件代理处理的。
这个过程的详细步骤(对应图中的数字)如下:
- 消息生产者将事件消息发送到事件代理,事件流消费并持久化消息。更多信息,请参见发布保证消息。
- 消息到达非持久事件流会导致数据平面确定哪些非持久消费者对消息感兴趣。
- 消息的引用被移动到所有订阅主题与消息主题匹配的消费者适当的消费者出口队列中。根据消息的优先级,消息随后在TCP中排队等待发送给适当的消费者。更多信息,请参见客户端出口队列结构概览。