【发布时间】:2020-10-22 21:54:46
【问题描述】:
生产者有什么方法可以将消息发送到代理中的特定主题分区?
截至目前,可以发送具有 2 个分区的主题,但无法控制在特定分区中发送。
Component
@EnableBinding(Source.class)
public class RsvpsKafkaProducer {
private static final int SENDING_MESSAGE_TIMEOUT_MS = 10000;
private final Source source;
public RsvpsKafkaProducer(Source source) {
this.source = source;
}
public void sendRsvpMessage(WebSocketMessage<?> message) {
System.out.println("sendRsvpMessage");
source.output()
.send(MessageBuilder.withPayload(message.getPayload())
.build(),
SENDING_MESSAGE_TIMEOUT_MS);
}
}
application.properties
spring.cloud.stream.kafka.binder.zkNodes=localhost:2181
spring.cloud.stream.kafka.binder.brokers=localhost:9093
spring.cloud.stream.bindings.output.destination=meetupTopic
spring.cloud.stream.bindings.output.producer.partitionCount=2
spring.cloud.stream.bindings.output.content-type=text/plain
spring.cloud.stream.bindings.output.producer.headerMode=raw
有什么方法可以使用 spring cloud stream 来实现吗?我希望一些消息进入P1 分区,一些消息进入meetupTopic 内的P2 分区。
【问题讨论】:
-
也许你应该考虑使用组?
-
@jr593,意思是?
-
这个消息生成器类是什么?你能提供一些细节吗?来自 kafka 的 ProducerRecord 可以直接提供您要发送到的分区,因此 MessageBuilder 应该以某种方式公开相同的功能。
-
@RishabhSharma, docs.spring.io/spring-framework/docs/current/javadoc-api/org/…
标签: java spring apache-kafka spring-cloud-stream