All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.microsoft.azure.eventprocessorhost.IEventProcessor Maven / Gradle / Ivy

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.microsoft.azure.eventprocessorhost;

import com.microsoft.azure.eventhubs.EventData;


/**
 * Interface that must be implemented by event processor classes.
 * 

* Any given instance of an event processor class will only process events from one partition * of one Event Hub. A PartitionContext is provided with each call to the event processor because * some parameters could change, but it will always be the same partition. *

* Although EventProcessorHost is multithreaded, calls to a given instance of an event processor * class are serialized, except for onError(). onOpen() is called first, then onEvents() will be called zero or more * times. When the event processor needs to be shut down, whether because there was a failure * somewhere, or the lease for the partition has been lost, or because the entire processor host * is being shut down, onClose() is called after the last onEvents() call returns. *

* onError() could be called while onEvents() or onClose() is executing. No synchronization is attempted * in order to avoid possibly deadlocking. */ public interface IEventProcessor { /** * Called by processor host to initialize the event processor. *

* If onOpen fails, this event processor host instance will give up ownership of the partition. * * @param context Information about the partition that this event processor will process events from. * @throws Exception to indicate failure. */ void onOpen(PartitionContext context) throws Exception; /** * Called by processor host to indicate that the event processor is being stopped. *

* If onClose fails, the exception is reported to the general exception notification handler set via * EventProcessorOptions, if any, but is otherwise ignored. * * @param context Information about the partition. * @param reason Reason why the event processor is being stopped. * @throws Exception to indicate failure. */ void onClose(PartitionContext context, CloseReason reason) throws Exception; /** * Called by the processor host when a batch of events has arrived. *

* This is where the real work of the event processor is done. It is normally called when one * or more events have arrived. If the EventProcessorHost instance was set up with an EventProcessorOptions * on which setInvokeProcessorAfterReceiveTimeout(true) has been called, then when a receive times out, * onEvents will be called with an empty iterable. By default this option is false and receive timeouts do not * cause a call to this method. * * @param context Information about the partition. * @param events The events to be processed. May be empty. * @throws Exception to indicate failure. */ void onEvents(PartitionContext context, Iterable events) throws Exception; /** * Called when the underlying client experiences an error while receiving. EventProcessorHost will take * care of recovering from the error and continuing to pump events, so no action is required from * your code. This method is provided for informational purposes. * * @param context Information about the partition. * @param error The error that occured. */ void onError(PartitionContext context, Throwable error); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy