Kafka项目反应堆:在Flux结束时执行操作而不会阻塞

时间:2019-01-02 19:00:30

标签: java apache-kafka nio project-reactor reactive

我正在开发一个使用import pandas as pd import itertools # Source DataFrame df = pd.DataFrame(data=[ [ 5153, '04/04/2017 11:40:00', True ], [ 7542, '04/04/2017 17:18:00', True ], [ 875, '04/04/2017 20:08:00', True ], [ 74, '05/04/2017 20:30:00', False ], [ 9652, '06/04/2017 20:32:00', True ], [ 965, '07/04/2017 12:52:00', True ], [ 752, '10/04/2017 17:40:00', True ], [ 9541, '10/04/2017 19:29:00', True ], [ 7452, '11/04/2017 12:20:00', True ], [ 9651, '12/04/2017 13:57:00', False ]], columns=[ 'TRN', 'TRN_DATE', 'FILTER_OK' ]) # Work list xx = [] # Collect groups for 'True' key with at least 5 members for key, group in itertools.groupby(df.values, lambda x: x[2]): lst = list(group) if key and len(lst) >= 5: xx.extend(lst) # Create result DataFrame with the same column names df2 = pd.DataFrame(data=xx, columns=df.columns) Kafka API来与project-reactor反应式连接的应用程序。用例是有一个输入主题,其中包含要处理的文件的文件路径。应用程序读取每个文件,对其进行处理,创建一系列处理过的消息,并将其推送到输出主题。要求是一旦处理完该文件就必须删除该文件,并将处理后的消息推送到输出主题。因此,必须在处理完每个文件并将消息流推送到输出主题之后执行删除操作。

Kafka-brokers

}

* transform()方法启动文件路径(m.value())中的文件处理并返回消息流。

问题在于,即使在将所有消息推送到输出主题之前,文件也会被删除。因此,万一发生故障,请重试原始文件。

1 个答案:

答案 0 :(得分:0)

由于似乎path变量可以在整个管道中访问(方法输入参数?),因此可以在单独的doFinally中删除文件。您需要过滤onCompletecancel SignalType,因为如果发生故障您不想删除文件。

如果您对取消后删除文件不感兴趣,则另一个选项为doOnComplete