Custom Joiners
On this section, we are trying to explain how to develop your own joiners.
All the joiners classes implement the Joiner interface.
If you want to build your own joiners, you only need to implement some of different abstract classes and add de JAR into the lib
folder inside the enricher distribution.
BaseJoiner
The base abstract class that you need to implement your own BaseJoiner is BaseJoiner class.
Using this class you can develop your joiners like:
The BaseJoiner allow us join both stream and table with same key. If the stream message cannot be joined then any message is sent.
The abstract class has one method:
public Map<String, Object> join(Map<String, Object> stream, Map<String, Object> table) {
// Join logic that return a new Map
}
On each join
call the enricher gives you a table
and a stream
that is the deserialized json. You must return a Map object with the new content.
QueryableJoiner
The base abstract class that you need to implement your own QueryableJoiner is QueryableJoiner class.
The QueryableJoiner works like BaseJoiner. The difference is that a QueryableJoiner will notify to __enricher_queryable
topic, if received message cannot be join it with other with same key.
The abstract class has same method that BaseJoiner
QueryableBackJoiner
The base abstract class that you need to implement your own QueryableJoiner is QueryableBackJoiner class.
The QueryableBackJoiner works like QueryableJoiner. The difference is that a QueryableBackJoiner will notify to __enricher_queryable
topic and will resend unjoined messages to source topic, if received message cannot be join it with other with same key.
The abstract class has same method that BaseJoiner