基于json字段路由整个Json Contents

时间:2018-07-26 09:18:51

标签: json apache-nifi

我有以下JSON:

SSDT

我要根据Alert中的字段是否为“严重”来对此路由。

我已经尝试过RouteOnAttribute处理器和一个EvaluateJson处理器。都没有工作。

对于我尝试过的RouteOnAttribute

允许:{ "From": "stuart", "Payload": { "Alert": "Critical", "Recipient": "Joe" } }

然后我有一个基于Alerted的关系,但是我的RouteOnAttribute处理器什么也没进入,队列一直坐在那里直到它填满10,000。

我需要路由完整的JSON,我不会在路由中丢失信息。

enter image description here

1 个答案:

答案 0 :(得分:7)

问题在于 jsonPath 函数适用于流文件属性,但是您没有与流文件相关联的有效载荷属性。

如何向流文件添加属性?

generateflowfile处理器之后,使用 EvaluateJsonPath 处理器,将目标作为flowfile-attribute

添加新属性

payload.alert为$ .Payload.Alert

enter image description here 然后使用routeonattribute处理器将新属性添加为

允许

#Mobules of script   
    use JIRA::REST;
    use Data::Dumper;
    use Devel::Trace;
    use JSON; 

    # Iterate on issues
    my $search = $jira->POST('/search', undef, {
        jql        => 'project = xxx AND issuetype = Bug AND status = Unassigned AND created >= -10m',
        startAt    => 0,
        maxResults => 1,
        fields     => [ qw/summary status assignee/ ],
    });

    foreach my $issue (@{$search->{issues}}) {
        print "Found issue $issue->{key}\n";
    }


    # Attach files using an utility method

     my $filename = "/root/perl-script/image.txt"; 
     # Attach files using an utility method
     $jira->attach_files(xxx-56639, ($filename));

流量:

${payload.alert:equals('Critical')}