San*_*jay 2 spring kafka-producer-api spring-cloud-stream spring-kafka
我试图使用 spring 云流发送带有键值对的消息。我无法为此找到任何 API。org.springframework.messaging.MessageChannel 仅将有效负载作为发送功能的一部分。尽管使用 Kafka 模板可以实现这一点。这是生成键值类型消息的唯一方法。由于 KafkaTemplate 是 apache kafka 的 spring 的一部分,我希望在 spring 云流中有一个可用的抽象。请建议。
谢谢,
出于您的问题的目的,您可以将 spring-cloud-stream 视为对更多低级 API 的更高级别抽象,例如 spring-kafka(如果使用 kafka binder)、spring-integration 等。换句话说,您不需要在框架范围内明确发送或接收任何内容。它将为您进行发送和接收;这是框架的核心功能 - 将代码的执行绑定到由代理管理的输入和输出目的地。您需要为您的案例做的就是生成一个Message. 例如,这是一个功能齐全的应用程序
@SpringBootApplication
public static class SupplierConfiguration {
@Bean
public Supplier<String> stringSupplier() {
return () -> "Hello from Supplier";
}
}
Run Code Online (Sandbox Code Playgroud)
虽然您所做的只是生成一个字符串,但框架会将其包装到 Message 并将其发送到 Kafka(前提是您使用的是 Kafka binder)。如果需要明确控制键的值,可以使用kafka_messageKeyset返回 Message 的实际实例。例如;
@SpringBootApplication
public static class SupplierConfiguration {
@Bean
public Supplier<Message<?>> stringSupplier() {
return () -> MessageBuilder.withPayload("Hello from Supplier")
.setHeader(KafkaHeaders.MESSAGE_KEY, "blah")
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
另外,请注意我们正在从基于注解的编程模型转向更简单的功能模型。
| 归档时间: |
|
| 查看次数: |
1242 次 |
| 最近记录: |