我在应用程序中有以下使用模式:
发布者以每条消息 5- 微秒的速率向主题发送消息(即每 5 分钟发送一条消息)。
- 使用者订阅主题并以每条消息 10 微秒的速率处理消息(即在 JAVA API 中完成 onReceive 回调需要 10 分钟)。
- 使用者只对发布到主题的最后一条消息感兴趣,因此可以丢弃所有中间未处理的消息。
是否有可能避免消费者端未处理消息队列中的拥塞?
我尝试使用 eliding with delay=0(文档链接),但是,如果消息已经放入消费者端 Solace 中的内部队列,则无济于事(我指的是 com.solacesystems.jcsmp.impl.XMLMessageQueue)。
将延迟设置为某个特定值可以正常工作,但它不能很好地缩放,因为此数字是动态的,取决于发布者的数量和使用者性能。
一个可能的解决方案是创建一个订阅该主题的 LVQ(最后一个值队列)。您可以通过将队列配额设置为 0 MB 来创建 LVQ。
然后让您的订阅应用程序使用来自 LVQ 的消息。
在设备中,您应该看到与使用直接消息发送时几乎相同的性能,因为它永远不会命中线轴。