Kafka Metamorphosis - A Clojure wrapper for Apache Kafka
'When Gregor Samsa woke up one morning from unsettling dreams, he found himself changed in his bed into a monstrous vermin.' — Franz Kafka, The Metamorphosis
Just as Gregor Samsa underwent his transformation, this library metamorphoses the complex Java Kafka APIs into elegant Clojure functions.
Kafka Metamorphosis - A Clojure wrapper for Apache Kafka 'When Gregor Samsa woke up one morning from unsettling dreams, he found himself changed in his bed into a monstrous vermin.' — Franz Kafka, The Metamorphosis Just as Gregor Samsa underwent his transformation, this library metamorphoses the complex Java Kafka APIs into elegant Clojure functions.
(-main & args)
Entry point for the Kafka Metamorphosis library. Supports different commands and demonstrates library usage.
Entry point for the Kafka Metamorphosis library. Supports different commands and demonstrates library usage.
(admin-config)
(admin-config bootstrap-servers)
Create an admin client configuration.
Usage: (admin-config) ; Local broker (admin-config "kafka:9092") ; Custom broker
Create an admin client configuration. Usage: (admin-config) ; Local broker (admin-config "kafka:9092") ; Custom broker
(build-config overrides serializers-or-deserializers)
(build-config bootstrap-servers overrides serializers-or-deserializers)
Generic configuration builder that can be used for producers, consumers, and admin clients.
Usage:
(build-config {:group-id "my-group"} string-deserializers) ; Consumer config
(build-config {:acks "all"} json-serializers) ; Producer config
(build-config {} {}) ; Admin config
(build-config "kafka:9092" {:group-id "group"} string-deserializers) ; Custom broker
Generic configuration builder that can be used for producers, consumers, and admin clients. Usage: (build-config {:group-id "my-group"} string-deserializers) ; Consumer config (build-config {:acks "all"} json-serializers) ; Producer config (build-config {} {}) ; Admin config (build-config "kafka:9092" {:group-id "group"} string-deserializers) ; Custom broker
(consume-json-messages! group-id topics)
(consume-json-messages! group-id topics opts)
Consume JSON messages from topics with minimal setup. Returns a lazy sequence of messages with values automatically parsed from JSON.
Usage: (consume-json-messages "my-group" ["topic1" "topic2"]) (consume-json-messages "my-group" ["topic1"] {:max-messages 10}) (consume-json-messages "my-group" ["topic1"] {:timeout-ms 5000 :max-messages 100})
Consume JSON messages from topics with minimal setup. Returns a lazy sequence of messages with values automatically parsed from JSON. Usage: (consume-json-messages "my-group" ["topic1" "topic2"]) (consume-json-messages "my-group" ["topic1"] {:max-messages 10}) (consume-json-messages "my-group" ["topic1"] {:timeout-ms 5000 :max-messages 100})
(consume-messages! group-id topics)
(consume-messages! group-id topics opts)
Consume messages from topics with minimal setup. Returns a lazy sequence of messages.
Usage: (consume-messages "my-group" ["topic1" "topic2"]) (consume-messages "my-group" ["topic1"] {:max-messages 10}) (consume-messages "my-group" ["topic1"] {:timeout-ms 5000 :max-messages 100})
Consume messages from topics with minimal setup. Returns a lazy sequence of messages. Usage: (consume-messages "my-group" ["topic1" "topic2"]) (consume-messages "my-group" ["topic1"] {:max-messages 10}) (consume-messages "my-group" ["topic1"] {:timeout-ms 5000 :max-messages 100})
(consumer-config group-id)
(consumer-config group-id overrides)
(consumer-config bootstrap-servers group-id overrides)
(consumer-config bootstrap-servers group-id overrides deserializers)
Create a consumer configuration with sensible defaults.
Usage: (consumer-config "my-group") ; String deserializers, local broker (consumer-config "my-group" {:auto-offset-reset "latest"}) ; Override settings (consumer-config "kafka:9092" "my-group" {}) ; Custom broker + group (consumer-config "my-group" {} string-deserializers) ; Custom deserializers (consumer-config "kafka:9092" "my-group" {} json-deserializers) ; JSON deserializers
Create a consumer configuration with sensible defaults. Usage: (consumer-config "my-group") ; String deserializers, local broker (consumer-config "my-group" {:auto-offset-reset "latest"}) ; Override settings (consumer-config "kafka:9092" "my-group" {}) ; Custom broker + group (consumer-config "my-group" {} string-deserializers) ; Custom deserializers (consumer-config "kafka:9092" "my-group" {} json-deserializers) ; JSON deserializers
Default Kafka broker address for local development
Default Kafka broker address for local development
(health-check)
(health-check bootstrap-servers)
Check if Kafka is accessible and return cluster information.
Usage: (health-check) (health-check "kafka:9092")
Check if Kafka is accessible and return cluster information. Usage: (health-check) (health-check "kafka:9092")
(json-consumer-config group-id)
(json-consumer-config group-id overrides)
(json-consumer-config bootstrap-servers group-id overrides)
Create a consumer configuration for JSON values with sensible defaults. Uses simple JSON mode (no schema registry required).
Usage: (json-consumer-config "my-group") ; String keys, JSON values, local broker (json-consumer-config "my-group" {:auto-offset-reset "latest"}) ; Override settings (json-consumer-config "kafka:9092" "my-group" {}) ; Custom broker + group
Create a consumer configuration for JSON values with sensible defaults. Uses simple JSON mode (no schema registry required). Usage: (json-consumer-config "my-group") ; String keys, JSON values, local broker (json-consumer-config "my-group" {:auto-offset-reset "latest"}) ; Override settings (json-consumer-config "kafka:9092" "my-group" {}) ; Custom broker + group
(json-producer-config)
(json-producer-config overrides)
(json-producer-config bootstrap-servers overrides)
Create a producer configuration for JSON values with sensible defaults. Uses simple JSON mode (no schema registry required).
Usage: (json-producer-config) ; String keys, JSON values, local broker (json-producer-config {:acks "1"}) ; Override specific settings (json-producer-config "kafka:9092" {:acks "all"}) ; Custom broker + settings
Create a producer configuration for JSON values with sensible defaults. Uses simple JSON mode (no schema registry required). Usage: (json-producer-config) ; String keys, JSON values, local broker (json-producer-config {:acks "1"}) ; Override specific settings (json-producer-config "kafka:9092" {:acks "all"}) ; Custom broker + settings
(local-config)
(local-config bootstrap-servers)
Create a base configuration for local Kafka development.
Usage: (local-config) ; Use default localhost:9092 (local-config "kafka:9092") ; Custom broker address
Create a base configuration for local Kafka development. Usage: (local-config) ; Use default localhost:9092 (local-config "kafka:9092") ; Custom broker address
(producer-config)
(producer-config overrides)
(producer-config bootstrap-servers overrides)
(producer-config bootstrap-servers overrides serializers)
Create a producer configuration with sensible defaults.
Usage: (producer-config) ; String serializers, local broker (producer-config {:acks "1"}) ; Override specific settings (producer-config "kafka:9092" {:acks "all"}) ; Custom broker + settings (producer-config {} string-serializers) ; Custom serializers (producer-config "kafka:9092" {} json-serializers) ; JSON serializers
Create a producer configuration with sensible defaults. Usage: (producer-config) ; String serializers, local broker (producer-config {:acks "1"}) ; Override specific settings (producer-config "kafka:9092" {:acks "all"}) ; Custom broker + settings (producer-config {} string-serializers) ; Custom serializers (producer-config "kafka:9092" {} json-serializers) ; JSON serializers
(send-json-message! topic value)
(send-json-message! topic key value)
(send-json-message! topic key value producer-opts)
Send a JSON message to a topic with minimal setup. The value will be automatically converted to JSON.
Usage: (send-json-message! "my-topic" {:name "John" :age 30}) (send-json-message! "my-topic" "user-123" {:name "John" :age 30}) (send-json-message! "my-topic" "user-123" {:name "John"} {:acks "1"})
Send a JSON message to a topic with minimal setup. The value will be automatically converted to JSON. Usage: (send-json-message! "my-topic" {:name "John" :age 30}) (send-json-message! "my-topic" "user-123" {:name "John" :age 30}) (send-json-message! "my-topic" "user-123" {:name "John"} {:acks "1"})
(send-message! topic value)
(send-message! topic key value)
(send-message! topic key value producer-opts)
Send a message to a topic with minimal setup.
Usage: (send-message! "my-topic" "Hello, World!") (send-message! "my-topic" "key" "Hello, World!") (send-message! "my-topic" "key" "Hello, World!" {:acks "1"})
Send a message to a topic with minimal setup. Usage: (send-message! "my-topic" "Hello, World!") (send-message! "my-topic" "key" "Hello, World!") (send-message! "my-topic" "key" "Hello, World!" {:acks "1"})
cljdoc builds & hosts documentation for Clojure/Script libraries
Ctrl+k | Jump to recent docs |
← | Move to previous article |
→ | Move to next article |
Ctrl+/ | Jump to the search field |