Pub/Sub 消息行为和属性
消息包含由发布者发送并通过主题传递给订阅者的实际数据对象。例如,一些订户对公司的订单详细信息感兴趣。创建主题供发布者发布 m
一旦发布者将消息发布到主题,注册的订阅者就会被通知与他们感兴趣的消息有关的消息已经发布。 在多条消息的情况下,它们会按顺序存储在特定主题的队列中。
备注
同一条消息可以分配给多个主题。 这是通过自动生成的 ID 唯一标识的。
消息属性
您可以通过 交货选项 关于如何传递消息的枚举。 以下是由 NCache:
全部传感器 : 消息将传递给所有注册的订阅者。
任何: 消息被传递给任何一个注册的订阅者。 如果未收到确认,则将消息重新分配给下一个订阅者。 如果收到确认,则删除消息。
消息行为
备注
此功能仅适用于 企业版.
如果满足以下条件,则消息无效:
赶出:如果在缓存上启用了驱逐,消息也将使用 LRU(最近最少使用)、LFU(最不常用)或基于优先级的策略从主题中驱逐。
如果用于 Pub/Sub 事务的缓存与用于普通缓存的缓存相同,则驱逐的第一优先级将始终是缓存数据。
如果缓存数据不可用于驱逐,则消息将被驱逐。 这将确保仅在极端情况下或仅当缓存专用于 Pub/Sub 时才会驱逐消息。
過期: 可以像缓存项一样对消息启用过期。 过期间隔过后,消息将从缓存中过期,并使用相同的清理间隔机制。
清除缓存:清除缓存后,消息将与缓存项一起删除。
缓存重启: 与清除缓存类似,缓存重新启动时清除缓存内容。 这还包括所有主题和其中包含的消息。
存储和分配
消息基于拓扑分布在节点之间。
对于副本分区和分区拓扑,使用基于散列的分布。
对于复制拓扑,消息被复制到集群缓存的所有节点。 然而,协调节点负责消息操作。
对于镜像拓扑,消息被发布到主动节点,然后相应地复制到被动节点。
如果消息存储接近驱逐,则会记录一个事件,指示存储已满并且驱逐已经开始。
消息在缓存内存上有开销。 因此,在计算缓存大小时会考虑消息大小。
加密和压缩
备注
此功能仅适用于 企业版.
在缓存级别配置的加密和压缩也适用于主题消息有效负载。
状态转移
在状态转移的情况下,当消息移动到集群中的另一个节点时,最终存储消息的节点负责传递。
备注
在状态转移期间,订阅者有可能收到重复的消息。
有序消息
备注
此功能仅在 NCache 5.2起.
NCache 现在支持在客户端维护消息顺序的有序消息。 用户可以为消息块指定一个序列名称,并且有序消息按照它们发布的完全相同的顺序传递给订阅者。对于有序消息链,序列字符串应该相同。 使用序列字符串,所有消息都使用位置关联机制驻留在同一节点上。
以下是有序消息的重要特征:
来自具有相同序列的发布者的消息驻留在单个缓存节点上。
如果
DeliveryOption
设置为 Any 时,所有相同序列的有序消息都投递给同一个订阅者。 如果特定订户失去连接或变得不可用,则为此目的重新分配新订户。 但是,如果DeliveryOption
设置为 All,则所有相同序列的有序消息都会传递给所有订阅者。在状态转移的情况下,有序消息可能会丢失其顺序并在不保持顺序的情况下发布。
有序消息只能使用 Publish API 中的 Sync 模式发布。 不支持批量和异步 API 调用。
更多资讯
NCache 为 Pub/Sub 提供了一个示例应用程序 GitHub上.