Open topic with navigation

TIBCO BusinessEvents® Enterprise Edition 6.3.1

# Custom Channel Lifecycle

By using the Java API, you can create your own custom channel according to your requirement. While implementing a custom channel, you can extend custom channel classes and override custom channel methods that BusinessEvents invokes during startup.

Refer to Java API Reference for complete list of Java classes and interfaces for the custom channel. However, few of the key Java classes, interfaces and their key components are mentioned in the following sections identifying the channel lifecycle in BusinessEvents.

## Channel and Destination Class Instantiation

Channel and destination class instances are created during the engine startup by using the information provided in the drivers.xml file and in the project. For each of your custom channel defined in the project, BusinessEvents creates one instance of the driver class as defined in drivers.xml and calls the driver class's `getChannel` method. Typically, the `getChannel` method must return a new channel instance of your channel class.

Similarly, for each of the destination of each of your custom channel found in the project, BusinessEvents calls `Driver.getDestination` method. Typically, the `getDestination` method return a new instance of your destination class.

During startup, BusinessEvents invokes the various lifecycle methods of your custom channel in the sequence specified in the following figure.

Figure 54: Channel Initialization Sequence

## Channel.init

Initialize your channel in this method. Extend the `BaseChannel` class to create your custom channel class and then you can override the `init` method to perform initialization of your channel. During initialization, your custom channel can access the channel properties that you have defined in `drivers.xml` using the `getChannelProperties` method and access the runtime TIBCO BusinessEvents properties using the `getBeProperties` method. For example, when you override the `Channel.init`method, you can set up initialization objects such as thread pools for internal use, connection objects for connecting to your channel endpoints, and so on.

If you override the `init` method, you must initialize each destination manually, or you call the `super.init` method. The `super.init` method initializes each of the channel's destinations by calling the `BaseDestination.init` method for each destination of the channel.

## Destination.init

Extend the `BaseDestination` class to create your custom destination class. In case, the destination need initialization, override the `init` method to initialize your destination. You can access destination properties by using the `getDestinationProperties` method. You can access the parent channel instance by using the `getChannel` method and in turn channel and TIBCO BusinessEvents properties from the channel instance.

## Channel.connect

For connection based transports, such as JMS or WebSphere MQ, override the `connect` method to initiate the connection to the underlying data provider or data source. By default, the `BaseChannel` implementation calls the `BaseDestination.connect` method for each of your destinations. In case your destination does not have a connection semantic, you can simply implement an empty method.

If you override the `connect` method, you must initiate connection for each destination manually, or you call the `super.connect` method. The `super.connect` method initiates connection for each of the channel's destinations by calling the `BaseDestination.connect` method for each destination of the channel.

## Destination.bind

The next step in the TIBCO BusinessEvents startup sequence is the `BaseDestination.bind` method. Whenever an agent becomes active, TIBCO BusinessEvents calls the `BaseDestination.bind` method for each of the destination defined in CDD under Input Destinations Collections of the agent. The `bind` method binds the underlying RuleSession to a destination, that is, whenever a message arrives on that destination endpoint, the message is routed to the RuleSession associated with the destination. Thus, the message triggers the rules associated with its bounded RuleSession.

In the `bind` method, you must start your destination's message listeners and store or bind the EventProcessor instance, that is handed out by the framework to this listener. When a message arrives at this listener's endpoint, you must convert this message to an event by using the serializer for your destination, and then send that event to the TIBCO BusinessEvents framework by calling the `EventProcessor.processEvent` method.

## Channel.start

The next step during TIBCO BusinessEvents startup sequence is the `BaseChannel.start` method. For each of the channels, TIBCO BusinessEvents calls the `start` method. By default, the `BaseChannel.start` method calls the `BaseDestination.start` method for each destination. Use this call to start dispatching messages from the underlying transport.

If you override the `start` method, you can call the `super.start` method to start each of the channel's destinations by calling the `BaseDestination.start` method.

If you override the `start` method, you must start each destination manually, or you call the `super.start` method. The `super.start` method starts each of the channel's destinations by calling the `BaseDestination.start` method for each destination of the channel.

## Channel.suspend

TIBCO BusinessEvents invokes the `BaseChannel.suspend` method when you need to suspend the channel. Provide a meaningful implementation in this method to suspend receiving of messages for your destination.

If you override the `suspend` method, you need to suspend each destination manually, or you can call the `super.suspend` method. The `super.suspend` method suspends each of the channel's destinations by calling the `BaseDestination.suspend` method for each destination of the channel.

## Channel.resume

TIBCO BusinessEvents invokes the `BaseChannel.resume` method when you need to resume the suspended channel. Provide a meaningful implementation in this method to resume receiving of messages for your destination.

If you override the `resume` method, you need to resume each destination manually, or you can call the `super.resume` method. The `super.resume` method resumes each of the channel's destinations by calling the `BaseDestination.resume` method for each destination of the channel.

Did you find this helpful?

YesNo
Great!
Thanks for taking the time to give us some feedback.
Sorry about that

Why wasn't this helpful? (check all that apply)

Could not find what I was looking for
Instructions confusing or unclear
Instructions did not work

Want to tell us more?

Please select at least one option or provide details about the issue!!

Error occurred while submitting feedback.

Error2 occurred while submitting feedback.

TIBCO BusinessEvents® Enterprise Edition

Copyright © 2004-2024. Cloud Software Group, Inc. All Rights Reserved.