我在 nifi 集群中有 3 个节点。我使用“按属性分区”将流文件分发到 nifi 集群中的其他 nifi 节点。例如,我使用“type”属性作为“按属性分区”;
FlowFile -> type: A
FlowFile -> type: B
FlowFile -> type: C
Run Code Online (Sandbox Code Playgroud)
对于这种情况,具有相同“类型”的 FlowFile 将转到同一节点。但是,假设一个节点(发送类型 A 的流文件的节点)已关闭。虽然“类型 B 和 C”的 FlowFiles 将继续成功发送,但“类型 A”的 FlowFiles 将保留在队列中(不会被发送)。
与此同时,一个“type XY”的FlowFile即将到来(第一次。意味着它以前从未出现过)。在这种情况下,这个传入文件是否只发送到主动接收数据的节点(发送“类型B和C”的FlowFile的节点)?或者说,它可以将其发送到下降的节点吗?
例如对于这个问题;
FlowFile -> type: A -----> Waiting in the queue
FlowFile -> type: B ------> successfully sent
FlowFile -> type: C ------> successfully sent
and
FlowFile -> type: XY ------> Which node can be sent to? (B or C ?)
Run Code Online (Sandbox Code Playgroud)
我不希望类型为 XY 的流文件进入不可用的集群队列。
目前它使用集群中的所有节点(其中一些可能不可用)来计算节点,它并不真正知道该值之前是否见过,因此带有 XY 的流文件仍然可以选择不可用的节点。数据将排队等待节点返回。如果节点不会回来,那么您可以从集群中删除该节点,然后它会为所有排队的流文件重新计算一个新节点。