带有键的键值,消息类型为“ Spring cloud stream SOURCE

问题描述 投票:0回答:1

我正在尝试使用Spring Cloud Stream发送带有键,值对的消息。我找不到为此的任何API。 org.springframework.messaging.MessageChannel仅具有有效负载作为发送功能的一部分。尽管如此,使用Kafka模板仍可以实现。这是产生键值类消息的唯一方法。由于KafkaTemplate是apache kafka的spring的一部分,我希望Spring Cloud流中可以使用相同的抽象。请提出建议。

谢谢,

spring spring-kafka spring-cloud-stream kafka-producer-api
1个回答
0
投票

出于您的问题的目的,您可以将spring-cloud-stream作为更高级别的抽象,而不是像spring-kafka(如果使用kafka绑定程序),spring-integration等,通过更底层的API来查看。无需在框架范围内明确发送或接收任何内容。它将为您完成发送和接收;这是框架的核心功能-将代码的执行绑定到由代理管理的输入和输出目标。您需要为案例做的只是产生一个Message。例如,这是一个功能齐全的应用程序

@SpringBootApplication
public static class SupplierConfiguration {

    @Bean
    public Supplier<String> stringSupplier() {
        return () -> "Hello from Supplier";
    }
}

虽然您所做的都是生成一个String,但框架会将其包装到Message中并将其发送给Kafka(假设您使用的是Kafka活页夹)。如果需要显式控制键的值,则可以返回设置了kafka_messageKey的Message的实际实例。例如;

@SpringBootApplication
public static class SupplierConfiguration {

    @Bean
    public Supplier<Message<?>> stringSupplier() {
        return () -> MessageBuilder.withPayload("Hello from Supplier")
                   .setHeader(KafkaHeaders.MESSAGE_KEY, "blah")
                   .build();
    }
}

您可以阅读有关它的更多信息here

此外,请注意,我们正在从基于注释的编程模型过渡到更简单的功能模型。

© www.soinside.com 2019 - 2024. All rights reserved.