Разница между @onScheduled и @onTrigger из Apache NIFI? - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь реализовать пользовательский процессор, который читает сообщения из RocketMQ.

В основном мне нужно

  • создать MessageCosumer один раз
  • , затем вызвать MessageCosumer дляпотреблять сообщения повторно.

@ onScheduled и @onTrigger, какой из них использовать и как этого добиться?

1 Ответ

2 голосов
/ 01 июля 2019

Вы можете создать MessageConsumer в методе с помощью @OnScheduled, сохранить его как поле в классе процессора, а затем вызвать его внутри метода #onTrigger().

Метод @OnScheduled будет вызываться всякий раз, когда процессор запланирован для запуска (т. Е. Пользователь щелкает / вызывает API для «запуска» процессора).Метод #onTrigger() запускается каждый раз, когда процессор фактически выполняет какую-то единицу работы (т. Е. Когда один или несколько потоковых файлов извлекаются из входящей очереди и работают или когда срабатывает таймер, если это первый процессор в сегменте потока). Руководство разработчика Apache NiFi содержит дополнительную информацию по этому вопросу, а также общие сценарии и шаблоны , которые могут оказаться полезными.

Я бы также посмотрел исходный код для ConsumeJMS и AbstractJMSProcessor , поскольку это аналогичный шаблон.

...