在我们的环境中,我们有一个生产者,它不是Spring微服务,它通过Kinesis将Avro消息发送到Spring Cloud微服务。我的问题是非Spring生产者如何才能将消费者组消息标头添加到每条消息,以便Spring微服务可以扩展到多个实例,以确保Spring微服务不会消耗每条消息一次以上?
这可以在Kinesis中完成吗?如果可以,是否有任何代码示例可供任何人指向我?
答案 0 :(得分:1)
我会说“不清楚您要问的是什么”,但我会尽力解释可能出什么问题。
消费者组对消费者来说是一个抽象。生产者对这种抽象一无所知。指向发送消息到目的地而忘记了。
消费者组抽象的主要目标之一是确保仅在一个消费者中处理消息,而一个组中可能有多个消费者。
AWS Kinesis中有一项功能可以补充使用者组抽象。它是Kinesis流中的 sharding 。借助Spring Cloud Stream中的使用者组实现,有一个技巧可以在组中的使用者之间分配分片,以便可以并行处理它们。
在这里,您真的可以从分片中向生产者说出要向其发送记录的方面受益。在Kinesis Producer API中查看有关partitionKey
的更多信息。