NiFi PutFile установленное имя файла не работает

В зависимости от того, как вы создаете экземпляр этого класса, вам нужно объявить переменную clicked либо на уровне поля, либо на уровне переменной класса. В настоящее время область действия переменной clicked является локальной для метода.

Вариант 1

int clicked = 0;

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
 {                                         
  clicked++;
  System.out.println(clicked);
 }  

Вариант 2

static int clicked = 0;

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
 {                                         
  clicked++;
  System.out.println(clicked);
 } 

Опция, которую вы использование будет зависеть от экземпляра. Второй вариант следует избегать, если это возможно.

0
задан Antu 17 January 2019 в 13:04
поделиться

3 ответа

Из вопроса я понял, что есть тема kafka, в которой есть имя файла и кодированное в base64 содержимое файла в формате json; Вы хотите использовать тему kafka, декодировать содержимое файла с помощью Base64, чтобы создать изображение, и сохранить изображение в имени файла, используя PutFile.

Я придумал поток, который выполнит это требование и говорит сам за себя.

  1. ConsumeKafkaRecord_2_0 (Потребляет {"filename": "test.jpg", "filedata": "/ 9j / 4AAQSkZ .."})
  2. EvaluateJsonPath
    Назначение: flowfile -attribute
    rawtypes: $ .filedata
    имя файла: $ .filename
  3. ReplaceText (изменение содержимого потокового файла на кодированное изображение для следующего процессора)
  4. Base64EncodeContent (rawtypes декодируется в изображение этим процессором)
  5. UpdateAttribute (имя файла для хранения изображения обновляется здесь)
  6. PutFile
[1119 ] Невозможно загрузить шаблон потока здесь. Скриншот публикации ключевых процессоров

EvaluateJSONPath

enter image description here

ReplaceText - ( Заметьте значение замены)

enter image description here

UpdateAttribute enter image description here

0
ответ дан Arun211 17 January 2019 в 13:04
поделиться

На шаге 2 вы заменили содержимое файла потока значением $ .filedata, которое больше не является JSON, поэтому вы не можете использовать EvaluateJsonPath на шаге 3, так как JSON больше нет.

Если вы измените шаги 2 и 3 в обратном порядке, вы можете извлечь имя файла в атрибут и при этом сохранить исходный JSON в содержимом файла потока, а затем извлечь данные файла в содержимое.

0
ответ дан Bryan Bende 17 January 2019 в 13:04
поделиться

в соответствии с документацией PutFile :

Считывает атрибуты filename: имя файла, которое используется при записи FlowFile на диск.

вам просто нужно использовать процессор UpdateAttribute, чтобы установить значение для атрибута filename

0
ответ дан daggett 17 January 2019 в 13:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: