我希望在负载均衡的消费者中使用Solace保证的消息传递。
目前,如果我使用具有非独占访问类型的队列并且拥有多个消费者,则每个消费者将获得循环消息,如果消费者死亡,其未确认的消息将被转发给另一个消费者。
这是我需要的功能,但由于消息有效负载的大小不同,我可能会超出限制,因此需要实现分块。
现在的问题是我无法保证单个消息的所有分块消息都由同一个消费者处理,以便它可以重建原始消息,并且一旦构建就执行适当的消息确认。
我有没有办法用Solace实现这一目标。
在Kafka中,我可以使用原始消息的分区键来确保将分块消息路由到同一个消费者并使用复杂的提交同步逻辑。
答案 0 :(得分:0)
可以使用Solace中提供的功能在您的应用程序中实现自己的消息分块逻辑。
这可以通过在Solace中使用选择器来实现。出口选择器使客户端应用程序能够指定他们有兴趣接收哪些消息,这由消息的头字段和属性值确定。遵循此逻辑,如果需要对消息进行分块,则可以将相同的标识符属性添加到消息中的所有块中。客户将使用不同的选择器绑定到非独占队列,以便每个使用者只接收具有一种标识符的消息。
除了选择器之外,还要考虑的另一个功能是事务。您可以使用消息的开头块启动事务,并仅在收到消息中的最后一个块时提交。这样,如果使用者死亡,事务将回滚,并且消息中的所有块都将返回队列。