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

时间:2018-04-13 14:52:55

标签: solace

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

  1. 发布者向每个消息的速率为5微秒的主题发送消息(即每5微秒发送一条消息)。
  2. 消费者订阅该主题并处理每条消息的速率为10微秒的消息(即,在JAVA API中完成onReceive回调需要10微秒)。
  3. 消费者只对发布到该主题的最后一条消息感兴趣,因此可以删除所有中间未处理的消息。
  4. 是否可以避免消费者端未处理消息队列中的拥塞?

    我尝试使用延迟= 0(documentation link)进行删除,但是,如果消息已经放入消费者端Solace的内部队列中,则无效(我引用了com.solacesystems) .jcsmp.impl.XMLMessageQueue)。

    将延迟设置为某个特定值可以正常工作,但它不能很好地扩展,因为这个数字是动态的,取决于发布者的数量和消费者的表现。

1 个答案:

答案 0 :(得分:0)

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

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

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