如果生产者发送速率高于订阅者处理速率,则使用 Solace 避免拥塞



我在应用程序中有以下使用模式:

发布者以每条消息 5
  1. 微秒的速率向主题发送消息(即每 5 分钟发送一条消息)。
  2. 使用者订阅主题并以每条消息 10 微秒的速率处理消息(即在 JAVA API 中完成 onReceive 回调需要 10 分钟)。
  3. 使用者只对发布到主题的最后一条消息感兴趣,因此可以丢弃所有中间未处理的消息。

是否有可能避免消费者端未处理消息队列中的拥塞?

我尝试使用 eliding with delay=0(文档链接),但是,如果消息已经放入消费者端 Solace 中的内部队列,则无济于事(我指的是 com.solacesystems.jcsmp.impl.XMLMessageQueue)。

将延迟设置为某个特定值可以正常工作,但它不能很好地缩放,因为此数字是动态的,取决于发布者的数量和使用者性能。

一个可能的解决方案是创建一个订阅该主题的 LVQ(最后一个值队列)。您可以通过将队列配额设置为 0 MB 来创建 LVQ。

然后让您的订阅应用程序使用来自 LVQ 的消息。

在设备中,您应该看到与使用直接消息发送时几乎相同的性能,因为它永远不会命中线轴。

最新更新