Вы можете направить потоковый файл к нескольким взаимосвязям (подробнее см. Руководство разработчика Apache NiFi - Маршрут на основе содержимого (от одного до многих) ). Я не уверен, что вы говорите, что хотите откат при неудаче быть true , или если вы не поняли, вы можете изменить его на false .
Если вам необходимо, чтобы откат при сбое был истинным И для получения оповещения по электронной почте, у вас есть несколько вариантов:
- Измените исходный код
PutSQL
, чтобы клонировать потоковый файл, и отправьте его в отношение alert
, как указано выше. Вам нужно будет использовать код, подобный RouteOnContent
(см. Ниже).
- Зарегистрируйте приложение для входа в журнал электронной почты в
$NIFI_HOME/conf/logback.xml
, которое получает события журнала WARN
или ERROR
уровня от org.apache.nifi.processors.standard.PutSQL
Пример кода для маршрутизации потокового файла к нескольким отношениям
final Relationship firstRelationship = destinations.iterator().next();
destinations.remove(firstRelationship);
for (final Relationship relationship : destinations) {
FlowFile clone = session.clone(flowFile);
clone = session.putAttribute(clone, ROUTE_ATTRIBUTE_KEY, relationship.getName());
session.getProvenanceReporter().route(clone, relationship);
session.transfer(clone, relationship);
logger.info("Cloning {} to {} and routing clone to {}", new Object[]{flowFile, clone, relationship});
}
flowFile = session.putAttribute(flowFile, ROUTE_ATTRIBUTE_KEY, firstRelationship.getName());
session.getProvenanceReporter().route(flowFile, firstRelationship);
session.transfer(flowFile, firstRelationship);
logger.info("Routing {} to {}", new Object[]{flowFile, firstRelationship});