Table of Contents
List of Examples
brokers
parameterconfiguration
parametertopic
parameterinit_without_kafka
parametermetadata_timeout
parameterlog_without_overflow
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") ...
Set to anything but 0, specifies if kamailio starts even when kafka brokers are not available at startup time.
Default value is 0 (disabled).
Specifies, in milliseconds, how much time kamailio waits to get topic metadata info at startup time.
Default value is 2000 milliseconds (2 seconds).
Set to anything but 0, will skip logging most of the error messages that may happen to each kafka message sent to the broker. This is useful when e.g. kafka broker goes down, not to overflow syslog with error messages.
One can alwyas check this module's stats e.g. via RPC commands and see that errors happened or not. Those errors can have 2 causes:
Default value is 0 (disabled).
Example 1.6. Set log_without_overflow
parameter
... modparam("kafka", "log_without_overflow", 1) ...
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.7. 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.8. 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.