【发布时间】:2020-04-16 21:50:24
【问题描述】:
您好,我希望通过 java 代码使用 2.3 中发布的新覆盖策略。
我想创建一个这样的例子:
创建一个包含 10 条消息的主题
创建一个消费消息的消费者,然后将它们发送到默认的 FileSink
创建一个不应从消费者获取数据的覆盖接收器(它被配置为最早)
-
产生一条消息,由两个接收器消费和接收!
这是我的 SINK(文件)连接器(默认)的配置:
taskOut = new FileStreamSinkTask();
Map<String, String> sinkProperties = new HashMap<>();
sinkProperties.put(FileStreamSinkConnector.TOPICS_CONFIG, new ConstantSettingsBehavior().SINGLE_TOPIC);
sinkProperties.put(FileStreamSinkConnector.FILE_CONFIG, new ConstantSettingsBehavior().FILE_OUT_LATEST);
sinkProperties.put(OFFSET_COMMIT_INTERVAL_MS_CONFIG, String.valueOf(5_000));
sinkProperties.put(ConnectorConfig.CONNECTOR_CLIENT_CONSUMER_OVERRIDES_PREFIX + ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");
connectorOut.start(sinkProperties);
taskOut.initialize(createMock(SinkTaskContext.class));
taskOut.start(connectorOut.taskConfigs(1).get(0));
这里是最早的(只有变化的):
sinkProperties.put(FileStreamSinkConnector.TOPICS_CONFIG, new ConstantSettingsBehavior().SINGLE_TOPIC);
sinkProperties.put(FileStreamSinkConnector.FILE_CONFIG, new ConstantSettingsBehavior().FILE_OUT_EARLY);
sinkProperties.put(OFFSET_COMMIT_INTERVAL_MS_CONFIG, String.valueOf(5_000));
sinkProperties.put(ConnectorConfig.CONNECTOR_CLIENT_CONSUMER_OVERRIDES_PREFIX + ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
接下来我将创建一个消费者,将来自主题的消息作为
List
我将这个列表分配给每个连接器的任务:
myLatestOne.getTaskOut().put(data);
myEarlyOne.getTaskOut().put(data);
但看来我的做法不对!因为所有消息都是由每个连接器接收的
Here代码的拉取请求代码覆盖我正在使用的代码。
如果我错过了什么,请不要犹豫告诉我! (第一个问题)。
谢谢
【问题讨论】:
标签: java apache-kafka apache-kafka-connect