Table of Contents
List of Examples
brokers
parameterconfiguration
parametertopic
parameterkafka_send
usagekafka_send_key
usagekafka.stats
usagekafka.stats
usageTable of Contents
The following libraries or applications must be installed before running Kamailio with this module loaded:
librdkafka: the Apache Kafka C/C++ client library. https://github.com/edenhill/librdkafka
Old librdkafka version like 1.1.0 has been reported to work. Newer versions should work fine (E.g: Version 1.2.2-RC1 also works OK) https://github.com/edenhill/librdkafka/releases
Specifies a list of brokers separated by commas.
From librdkafka documentation:
brokerlist is a ,-separated list of brokers in the format: <broker1>,<broker2>,
Where each broker is in either the host or URL based format:
<proto> is either PLAINTEXT, SSL, SASL, SASL_PLAINTEXT
The two formats can be mixed but ultimately the value of the security.protocol config property decides what brokers are allowed.
This parameter is mandatory. There is no default value.
Example 1.1. Set brokers
parameter
... modparam("kafka", "brokers", "localhost:9092") modparam("kafka", "brokers", "broker1:10000,broker2") modparam("kafka", "brokers", "SSL://broker3:9000,ssl://broker2") ...
Specifies a set of general properties.
Each configuration property follows: name = value pattern. And configuration properties are separated by ;
This parameter is optional, but if it exists it can be configured only once.
Example 1.2. Set configuration
parameter
... modparam("kafka", "configuration", "topic.metadata.refresh.interval.ms=20000;queue.buffering.max.messages=1000000;metadata.request.timeout.ms=90000") modparam("kafka", "configuration", "topic.metadata.refresh.interval.ms=20000;queue.buffering.max.messages=500000;debug=all;metadata.request.timeout.ms=900000") ...
Specifies a topic name and a set of topic properties.
The topic defined in topic parameter has to already exist in Kafka servers.
Each topic property is a list of attribute = value separated by semicolon.
name attribute indicates the topic name. It is mandatory. Other attributes mean names of properties and are optional.
This parameter is optional. Each topic needs a topic parameter so several topic parameters are allowed.
Example 1.3. Set topic
parameter
... modparam("kafka", "topic", "name=my_topic;request.required.acks=0;request.timeout.ms=10000") modparam("kafka", "topic", "name=second_topic;request.required.acks=0;request.timeout.ms=10000") modparam("kafka", "topic", "name=third_topic") ...
Send a message to a specific topic via Kafka server.
This function returns -1 for all sort of errors. (So execution of script continues)
Parameters:
Available via KEMI framework as kafka.send.
Example 1.4. kafka_send
usage
... # Send "test message" to topic "my_topic" kafka_send("my_topic", "test message"); ...
Send a message with an associated key to a specific topic via Kafka server.
This function returns -1 for all sort of errors. (So execution of script continues)
Parameters:
Available via KEMI framework as kafka.send_key.
Example 1.5. kafka_send_key
usage
... # Send "test message" to topic "my_topic" with key "my_key" kafka_send_key("my_topic", "test message", "my_key"); ...
Show statistics about total sent messages and failed to deliver ones.