Sumo,

I did some digging around on your Github Repo and see that you've migrated
your ControllerService lookup to your @OnScheduled method, making use of
the ProcessContext.  This approach is certainly more preferred in terms of
allowing configuration of the Processor than the prior method you outlined
above.  That identifier is the unique ID generated by the framework for a
new controller service.  However, to close the trail on the previous path,
from within init, you would have needed to do something along the lines of:

context.getControllerServiceLookup().getControllerServiceIdentifiers(
VertxServiceInterface.class)

to find all the instances available and then choose one of those
identifiers, if any were present, at the time the processor was initialized.

To your second question, I believe you are on the right track, although I
am not overly familiar with Vertx.  This seems to map quite closely with
the JMS family of processors (GetJMSTopic [1] in conjunction with its
abstract parent JmsConsumer [2]). If you find you need more granular
control of the session, you can create a Processor that extends
AbstractSessionFactoryProcessor instead of AbstractProcessor.

Feel free to follow up with any additional questions or details you may
have.

Thanks!

[1]
https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetJMSTopic.java
[2]
https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/JmsConsumer.java

On Sun, Sep 27, 2015 at 3:24 PM, Sumanth Chinthagunta <xmlk...@gmail.com>
wrote:

>
> Hi All,
> I am new to NiFi and   I'm stuck with couple issues:
>
> 1. Unable to get hold of ControllerService  from Processor’s init method.
>         I wanted to pre-set some dependencies during init phase instead
> of  querying them repeatedly in onTrigger method.
>         I am getting null for service and not sure what I have to pass for
> 'serviceIdentifier’ . I couldn't find documentation or examples on how to
> give Identifier to a service.
>
>
>         final VertxServiceInterface vertxService = (VertxServiceInterface)
> context.getControllerServiceLookup().getControllerService("VertxService”)
>
>
> https://github.com/xmlking/nifi-websocket/blob/master/src/main/java/com/crossbusiness/nifi/processors/PutEventBus.java#L55
> <
> https://github.com/xmlking/nifi-websocket/blob/master/src/main/java/com/crossbusiness/nifi/processors/PutEventBus.java#L55
> >
>
> 2. for my usecase I get data published to a topic from EventBus with
> following code.
>
>         EventBus eb = vertx.eventBus();
>
>         eb.consumer("news.uk.sport", message -> {
>                 System.out.println("I have received a message: " +
> message.body());
>         });
>
>         I am working on a date ingest processor (push based) that needs to
> listen for new messages on a topic and send to flow as FlowFile.
>         In my case data source is EvenBus that expose emit messages via
> callback API.
>         I am looking for ideas on how to call Processor’s onTrigger method
> when the above callback is evoked.
>         Should I have to use my own intermediate queue and poll it in
> onTrigger method?
>         is there a better way to trigger the  onTrigger method
> programmatically ?
>
> Thanks
> Sumo
>

Reply via email to