The Enricher service has a multi tenant mode, in this mode it prefixes the application.id automatically in all the Kafka topics, except the bootstrapper and metric topic.

On this mode when you define a stream definition, for example:

{
  "joiners": [
    {"name":"streamPreferred", "className":"io.wizzie.enricher.enrichment.join.impl.StreamPreferredJoiner"}
  ],
  "queries": {
    "query1": "SELECT * FROM STREAM topic1 JOIN SELECT dim1,dim2 FROM TABLE topic2 USING streamPreferred INSERT INTO TABLE output"
  }
}

You define the topic topic1 and topic2 but actually you read from Kafka topic ${APP_ID}_topic1 and ${APP_ID}_topic2 and when you produce to the output topic, you really send data to the topic ${APP_ID}_output. On this mode we define the APP_ID == TENANT_ID. To enable this mode you can configure the property multi.id to true.

Global topics

For the topics defined at the property global.topics the application.id is not prefixed. This feature allows you the use of the topics without application.id prefix you defined at this property. This may be used when different enricher instances read from a common topic and you don’t want to have one topic to read the enrichment events for each one.