Spring cloud stream 非Spring制作人是否可以发送Spring云流运动消费者组?

Spring cloud stream 非Spring制作人是否可以发送Spring云流运动消费者组?,spring-cloud-stream,Spring Cloud Stream,在我们的环境中,我们有一个不是Spring微服务的生产者,通过Kinesis向Spring云微服务发送Avro消息。我的问题是,非Spring生产者如何将消费者组消息头添加到每条消息中,以便Spring微服务可以扩展到多个实例,从而确保Spring微服务不会多次使用每条消息 这可以用动觉来完成吗?如果可以的话,有没有任何人可以给我指点的代码示例?我想说不清楚你在问什么,但我会尽力解释可能的错误 消费者群体对于消费者来说是一个抽象概念。制作人对这个抽象概念一无所知。关键是把信息发送到目的地,然后忘

在我们的环境中,我们有一个不是Spring微服务的生产者,通过Kinesis向Spring云微服务发送Avro消息。我的问题是,非Spring生产者如何将消费者组消息头添加到每条消息中,以便Spring微服务可以扩展到多个实例,从而确保Spring微服务不会多次使用每条消息


这可以用动觉来完成吗?如果可以的话,有没有任何人可以给我指点的代码示例?

我想说不清楚你在问什么,但我会尽力解释可能的错误

消费者群体对于消费者来说是一个抽象概念。制作人对这个抽象概念一无所知。关键是把信息发送到目的地,然后忘记

消费者组抽象的主要目标之一是确保消息只在一个消费者中处理,同时一个组中可能有多个消费者

AWS动觉功能补充了消费群体抽象。它在运动流中切分。使用SpringCloudStream中的消费者组实现,有一个技巧可以在组中的消费者之间分配碎片,以便并行处理


在这里,你真的可以从切分中获益,切分告诉你的制作人将唱片发送给哪一个制作人。请参阅有关Kinesis Producer API中partitionKey的更多信息。

那么spring.cloud.stream.bindings.channel\u name.Producer.required-groups的用途是什么?我的理解(可能是错误的)是,生产者端需要此属性,以确保消息以指定的正确消费者组传递。我有一些微服务,其中生产者指定了此属性,消费者拥有具有相同值的spring.cloud.stream.bindings.channel_name.group。不是这样吗?您是说生产者的spring.cloud.stream.bindings.channel_name.producer.required-groups属性甚至都不是必需的吗?必需的组仅应用于非分区绑定,如RabbitMQ,该消息存储不提供分区概念。在动觉的情况下,我们在流中有碎片,所以在制作人方面没有关于组的事情要做。您可以自由地从任何制作者制作到Kinesis流,并通过Spring Cloud stream解决方案使用记录。请记住,必须在Spring云数据流使用者上关闭headerMode。默认情况下,它是一个embeddedHeaders,我相信您将无法确保在非Spring producer中嵌入头。只是澄清一下,您是说在使用Kinesis流时必须关闭headerMode吗?我需要在我的Kinesis consumer上设置的确切属性和值是什么?请参阅Docs::spring.cloud.stream.bindings..consumer.headerMode=none,其中使用自己的频道名称,通常是输入名称。