Nifi使用AMQP参数队列名称

时间:2018-02-05 21:15:34

标签: apache-nifi

我正在使用NIfi进行数据摄取。我的其中一个组件使用 Consume AMQP 处理器来使用rabit MQ队列。

它的工作没有任何问题,但问题是队列名称。它对每个环境都有所不同,因此我无法在不更改队列名称的情况下运行Nifi Flow。这在 QA PROD 环境中造成问题,因为我无法更改nifi流中的任何内容。 (不允许)

解决方案我认为是这样的。

  • As队列名称在文件中可用(位置在所有env中相同)
  • 通过GetFile处理器
  • 读取文件
  • 通过ExtractText Processor
  • 提取文本
  • 将此作为输入参数提供给ConsumeAMQP处理器

问题是ConsumeAMQP处理器没有接受任何输入。有人请让我知道怎么做吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用Apache NiFi中包含的Variable Registry来满足此用例。 VR包含进程组范围的变量,可以在解析表达式语言的任何位置引用它们,并且可以用于特定于环境的变量填充。

  1. 右键单击画布并选择" Variables"从上下文菜单中加载Variable Registry接口。
  2. 点击" + "添加新的变量定义图标。将其命名为amqp_queue_name并提供所需的值这是dev 中的队列名称。
  3. 点击"申请"保存这个。
  4. 像往常一样配置ConsumeAMQP处理器,但将队列设为${amqp_queue_name}
  5. ConsumeAMQP处理器现在将引用变量注册表中指定的队列,具体取决于环境。例如,如果导出此模板并将其导入到 QA Prod 环境中,其中该变量具有不同的值,则它将使用存在的任何内容。这也适用于NiFi 1.5.0中引入的版本化流程概念。