[
https://issues.apache.org/jira/browse/NIFI-190?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Joseph Gresock updated NIFI-190:
--------------------------------
Description:
Our team has developed a set of processors for the following use case:
* Format A needs to be sent to Endpoint A
* Format B needs to be sent to Endpoint B, but should not proceed until A has
reached Endpoint A. We most commonly have this restriction when Endpoint B
requires some output of Endpoint A.
The proposed Wait/Notify processors enable this functionality:
* Wait: routes files to the 'wait' relationship until a matching Release Signal
Identifier is found in the distributed map cache. Then routes them to
'success' (unless they have expired)
* Notify: stores a Release Signal Identifier in the distributed map cache,
optionally with attributes to copy to the outgoing matching Wait flow files.
An example:
Wait is configured with Release Signal Attribute = "${myId}". Its 'wait'
relationship routes back onto itself.
flowFile 1 { myId : "123" }
comes into Wait processor
Wait checks the distributed cache map for "123", doesn't find it, and is
routed to the 'wait' relationship
Notify is configured with Release Signal Attribute = "${myId}"
flowFile 2 { myId : "123" }
comes in to Notify processor
Notify puts an entry in the map for "123" with any other attributes from
flowFile2
Next time flowFile 1 is processed by Wait...
Finds an entry for "123"
Removes that entry from the map
Copies attributes to flowFile 1
Sends flowFile 1 out the success relationship
Notify will optionally cache attributes in the distributed map, as determined
by a regex property. This is what allows the output of Endpoint A to pass to
Endpoint B, above. Wait also allows conflicting attributes from the cache to
either be replaced or kept, depending on property configuration.
was:
Our team has developed a processor for the following use case:
* Format A needs to be sent to Endpoint A
* Format B needs to be sent to Endpoint B, but should not proceed until A has
reached Endpoint A. We most commonly have this restriction when Endpoint B
requires some output of Endpoint A.
The proposed Wait/Notify processors enable this functionality:
* Wait: routes files to the 'wait' relationship until a matching Release Signal
Identifier is found in the distributed map cache. Then routes them to
'success' (unless they have expired)
* Notify: stores a Release Signal Identifier in the distributed map cache,
optionally with attributes to copy to the outgoing matching Wait flow files.
An example:
Wait is configured with Release Signal Attribute = "${myId}". Its 'wait'
relationship routes back onto itself.
flowFile 1 { myId : "123" }
comes into Wait processor
Wait checks the distributed cache map for "123", doesn't find it, and is
routed to the 'wait' relationship
Notify is configured with Release Signal Attribute = "${myId}"
flowFile 2 { myId : "123" }
comes in to Notify processor
Notify puts an entry in the map for "123" with any other attributes from
flowFile2
Next time flowFile 1 is processed by Wait...
Finds an entry for "123"
Removes that entry from the map
Copies attributes to flowFile 1
Sends flowFile 1 out the success relationship
Signal flow files will also copy their attributes to matching held files, as
optionally configured by an attribute name regex property. This is what allows
the output of Endpoint A to pass to Endpoint B, above. Wait also allows
conflicting attributes to either be replaced or kept, depending on property
configuration.
> Wait/Notify processors
> ----------------------
>
> Key: NIFI-190
> URL: https://issues.apache.org/jira/browse/NIFI-190
> Project: Apache NiFi
> Issue Type: New Feature
> Components: Extensions
> Reporter: Joseph Gresock
> Assignee: Joseph Gresock
> Priority: Minor
> Fix For: 1.2.0
>
> Attachments: Wait_Notify_template.xml
>
>
> Our team has developed a set of processors for the following use case:
> * Format A needs to be sent to Endpoint A
> * Format B needs to be sent to Endpoint B, but should not proceed until A has
> reached Endpoint A. We most commonly have this restriction when Endpoint B
> requires some output of Endpoint A.
> The proposed Wait/Notify processors enable this functionality:
> * Wait: routes files to the 'wait' relationship until a matching Release
> Signal Identifier is found in the distributed map cache. Then routes them to
> 'success' (unless they have expired)
> * Notify: stores a Release Signal Identifier in the distributed map cache,
> optionally with attributes to copy to the outgoing matching Wait flow files.
> An example:
> Wait is configured with Release Signal Attribute = "${myId}". Its 'wait'
> relationship routes back onto itself.
> flowFile 1 { myId : "123" }
> comes into Wait processor
> Wait checks the distributed cache map for "123", doesn't find it, and is
> routed to the 'wait' relationship
> Notify is configured with Release Signal Attribute = "${myId}"
> flowFile 2 { myId : "123" }
> comes in to Notify processor
> Notify puts an entry in the map for "123" with any other attributes from
> flowFile2
> Next time flowFile 1 is processed by Wait...
> Finds an entry for "123"
> Removes that entry from the map
> Copies attributes to flowFile 1
> Sends flowFile 1 out the success relationship
> Notify will optionally cache attributes in the distributed map, as determined
> by a regex property. This is what allows the output of Endpoint A to pass to
> Endpoint B, above. Wait also allows conflicting attributes from the cache to
> either be replaced or kept, depending on property configuration.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)