anchor.diff:  
   === Overview
   
  -The Kafka Producer feature allows events, alarms and nodes from _{opennms-product-name}_ to be forwarded to Kafka.
  -
  -These objects are stored in different topics and the payloads are encoded using link:https://developers.google.com/protocol-buffers/[Google Protocol Buffers].
  +The _Kafka Producer feature_ allows events, alarms and nodes from _{opennms-product-name}_ to be forwarded to _Kafka_.
  +
  +These objects are stored in different topics and the payloads are encoded using link:https://developers.google.com/protocol-buffers/[Google Protocol Buffers (GPB)].
   See `opennms-kafka-producer.proto` in the corresponding source distribution for the model definitions.
   
   ==== Events
   
  -The Kafka Producer listens for all events on the event bus and forwards these to a Kafka topic.
  -The records are keyed by event UEI and contain a GPB encoded model of the event.
  +The _Kafka Producer_ listens for all events on the event bus and forwards these to a _Kafka_ topic.
  +The records are keyed by event _UEI_ and contain a _GPB_ encoded model of the event.
   
   By default, all events are forwarded to a topic named `events`.
   
  
positive.code: 
  ===== Node Criteria
  
  The node criteria is a string representation of the unique identifier for a given node.
  If the node is associated with a foreign source (fs)  and foreign id (fid), the node criteria resulting node criteria will be the name of the foreign source, followed by a colon (:) and then the foreign id i.e. (fs:fid).
  If the node is not associated with both a foreign source and foreign id, then the node id (database id) will be used.
  
  === Enabling the Kafka Producer
  
  The Kafka Producer is not enabled by default and can be enabled as follows.
  
  First, login to the Karaf shell of your _{opennms-product-name}_ instance and configure the Kafka client settings to point to your Kafka broker.
  See link:https://kafka.apache.org/10/documentation.html#producerconfigs[Producer Configs] for a complete list of available options.
  
  [source]
  
negative.code: 
  ==== Alarms
  
  The _Kafka Producer_ listens for changes made to the current set of alarms and forwards the resulting alarms to a _Kafka_ topic.
  The records are keyed by alarm reduction key and contain a _GPB_ encoded model of the alarm.
  When an alarm is deleted, a _null_ value is sent with the corresponding reduction key.
  Publishing records in this fashion allows the topic to be used as a link:https://docs.confluent.io/current/streams/concepts.html#ktable[KTable].
  The _Kafka Producer_ will also perform periodic synchronization tasks to ensure that the contents of the Kafka topic reflect the current state of alarms in the _{opennms-product-name}_ database.
  
  By default, all alarms (and subsequent updates) are forwarded to a topic named `alarms`.
  
  