Spring Cloud Stream:不同消息类型的消费者
Spring Cloud Stream: consumer for different message types
使用 StreamBridge,我将包含两种不同类型对象的消息发送到单个 Kafka 主题。
有没有一种方法可以使用 Spring Cloud Stream 来定义功能性消费者,使其能够使用两种类型的消息?
使用 event routing feature, you can have multiple consumers and then route to the right consumer using the routing function. See this sample 进行更高级的操作。但是,我意识到这不是您的用例,但想提一下以防万一。在消费者方面,如果使用域对象,则很难接受多种类型。例如,如果您传入的 POJO 是 Foo (Consumer<Foo>
),如果您向它发送 Bar
,它将在反序列化时失败。如果您愿意接受Consumer<byte[]
,那么您可以直接使用ByteArrayDeserializer
,然后在应用程序中打开本机解码,这样就不会尝试转换。收到 byte[]
后,您可能会尝试使用 ObjectMappter
或类似机制来构建具有正确类型的实际对象。
使用 StreamBridge,我将包含两种不同类型对象的消息发送到单个 Kafka 主题。 有没有一种方法可以使用 Spring Cloud Stream 来定义功能性消费者,使其能够使用两种类型的消息?
使用 event routing feature, you can have multiple consumers and then route to the right consumer using the routing function. See this sample 进行更高级的操作。但是,我意识到这不是您的用例,但想提一下以防万一。在消费者方面,如果使用域对象,则很难接受多种类型。例如,如果您传入的 POJO 是 Foo (Consumer<Foo>
),如果您向它发送 Bar
,它将在反序列化时失败。如果您愿意接受Consumer<byte[]
,那么您可以直接使用ByteArrayDeserializer
,然后在应用程序中打开本机解码,这样就不会尝试转换。收到 byte[]
后,您可能会尝试使用 ObjectMappter
或类似机制来构建具有正确类型的实际对象。