45.5.1Cluster Manager Processors

 

Cluster Manager module is available to all other modules, so no specific dependency needs to be configured to use it.

45.5.2Broker Consumer/Processor

 

Smile Camel broker is both a consumer and a processor, which means that it can participate in a route as a consumer <from..> or producer <to..> endpoint.

  • Example from URI: <from uri="smile:clustermgr/broker?topic=?my-kafka-from-topic">

  • Description: Takes messages from indicated topic, wraps them in a Camel Exchange and sends them to the following route node.

  • Example to URI: <to uri="smile:clustermgr/broker?topic=?my-kafka-to-topic">

  • Description: Sends received Camel Exchange message to defined Smile internal topic.

The Smile broker allows to reference topics simply by the topic name, which allows replacing a route like the following:

    <route>
        <from uri="kafka:v2-in-topic?brokers=localhost:9092&amp;sslKeystoreLocation=/path/to/keystore.jks&amp;sslKeystorePassword=changeit&amp;sslKeyPassword=changeit&amp;securityProtocol=SSL" />
        <to uri="smile:hl7v2/hl7v2ToFhirProcessor" />
        <to uri="kafka:bundle-out-topic/brokers=localhost:9092&amp;sslKeystoreLocation=/path/to/keystore.jks&amp;sslKeystorePassword=changeit&amp;sslKeyPassword=changeit&amp;securityProtocol=SSL" />
    </route>

by the simpler definition:

<route>
	<from uri="smile:clustermgr/broker?topic=v2-in-topic" />
	<to uri="smile:persistence/bundleProcessor" />
	<to uri="smile:clustermgr/broker?topic=bundle-out-topic" />
</route>

45.5.3Kafka Manual Commit

 

When your route begins with a Kafka consumer as the source, using manual commit mode can be useful in order to guarantee that no messages will be lost in the case of a disruption.

  • Example to URI: <to uri="smile:clustermgr/kafkaManualCommit" />

In order to use this processor, the Kafka consumer component must include the parameters autoCommitEnable=false and allowManualCommit=true.

The following example shows a route with manual transaction committing.

<route>
	<from uri="kafka:guaranteed-delivery-topic?brokers=localhost:9092&amp;allowManualCommit=true&amp;autoCommitEnable=false"/>
	<to uri="smile:persistence/bundleProcessor"/>
	<to uri="smile:clustermgr/kafkaManualCommit" />
</route>