Hi Vikram,

Good questions and thought out process in this email.

Your approach seems valid and a fairly typical use case which we are
working on supporting well.

1)  At this time, you cannot do so directly from NiFi.  I think based on
some of the initial discussions and work that has been performed, the C2
server (if you are willing to run an instance) may be a better option at
this juncture.  It is currently possible to communicate with NiFi via REST
to provide configuration to instances.  More info on this material is
available in the docs [1].  This will effectively do the workflow you are
seeking.  The notion behind the C2 is to decouple from the specific
provider especially as work on the Registry ramps up.  This would be
another, likely preferred, configuration provider.

2), 3)  There is not currently a hot deploy mechanism to an instance and
would require a restart to incorporate the new flow.  As you mention, the
change ingestors can allow an instance to consume a new configuration.  In
the current state, a given configuration can run multiple, distinct
dataflows, within one instance, but these are not decoupled from the
configuration.  That is to say, if I was running a first flow, Flow A, and
wanted to run a second flow, Flow B, I would create a template that adds
the functionality of Flow B to that of Flow A, and perform a deployment.
The http.query attribute allows the instance to provide information to the
server providing the configuration.  An example of this is in the
integration-tests project bootstrap.conf [2].  In this case, it is allowing
the device to indicate its class with the notion being that the server I am
ingesting a change from could custom tailor the configuration that is
delivered; think of a dynamically generated resource as opposed to a static
file just downloaded from a given server.  This should not concern your use
of FetchMQTT.

4) Not explicitly at this time.  While we do support transfer of data in
both directions, these higher level operations are not yet implemented.
There are ways this could be done, but the breadth of desired C2
functionality is not quite there yet.  What you are seeking is definitely
directly inline with some of the proposed and discussed features to
include.  There has been some initial discussion of initial cases on our
Wiki [3].


Please let us know if anything needs additional clarification and if you
have any additional questions or comments.

Thanks!
--aldrin

[1] https://github.com/apache/nifi-minifi/tree/master/
minifi-c2#configuration-providers
[2]
https://github.com/apache/nifi-minifi/blob/master/minifi-integration-tests/src/test/resources/bootstrap.conf#L60
[3] https://cwiki.apache.org/confluence/display/MINIFI/Product+requirements


On Wed, Aug 16, 2017 at 2:36 AM, Vikram KR <vkunni...@gmail.com> wrote:

>   I have a NiFi instance on my cloud server machine and I have MinFi
> instance running on my gate way. I want to capture data from 2 different
> devices and perform some device specific logic for filtering data on the
> edge and then on the server side detect some events which should raise
> alerts. I also want to send back some control messages from server to the
> devices.
>
>
>
> My approach to this would be the following,
>
> 1) Create 2 dataflows on the NiFi side which reads from an Input port,
> check for some specific parameter value in the data and then write to Kafka
> or some other target. I want to have two different dataflow and not a
> single dataflow for a specific reason.
>
>
>
> 2) Create 2 MiniFi edge flows each of which reads from a serial port and
> then performs some filtering based on a specifc condition for each of the
> device and then writes to a remote process group.
>
>
>
> Now I want to know if I can do the following with MinFi?
>
>
>
> 1) Can I deploy the first MinFi dataflow from the NiFi  UI, without
> exporting it as XML and then using the Converter tool Kit?
>
>
>
> 2) Assuming that I have Started the MiniFi with the yaml configuration
> having my MiniFi dataflow1, I want to now deploy the second MinFi dataflow
> without stopping and re-starting the MinFi instance?
>
>
>
> 3) I see that MiniFi can use the PullHttpChangeIngestor to  get the
> configuration changes,
>
> If I have 2 different dataflow's running on my MinFi instance, how will I
> know which processor's configuration got changed and what property got
> changes?
>
> Also  in the Minfi bootstrap conf file, what are these 2 properties? Can
> you give me an example of the http.query attribute value if I want to use
> say FetchMQTT processor on the edge?
>
>
>
> nifi.minifi.notifier.ingestors.pull.http.path=/c2/config
>
> # Query string to pull configurations with
>
> nifi.minifi.notifier.ingestors.pull.http.query=
>
>
>
> 4) Can I currently perform bidirectional communication using the minifi-C2
> server?
>
> what I mean by bi-directional communication is, based on the data that
> comes from the device my NiFi dataflow on the server will monitor value of
> a specific parameter and when that value exceeds certain limits ,  I want
> to send start and stop message to my device from server side? How will I be
> able to do that with MinFi?
>

Reply via email to