Bruce is a producer daemon for Apache Kafka. Bruce simplifies clients that send messages to Kafka, freeing them from the complexity of direct interaction with the Kafka cluster. Specifically, it handles the details of:
Routing messages to the proper brokers, and spreading the load evenly across multiple partitions for a given topic. Clients may optionally exercise control over partition assignment, such as ensuring that a group of related messages are all routed to the same partition, or even directly choosing a partition if the client knows the cluster topology.
Waiting for acknowledgements, and resending messages as necessary due to communication failures or Kafka-reported errors
Buffering messages to handle transient load spikes and Kafka-related problems
Tracking message discards when serious problems occur; Providing web-based discard reporting and status monitoring interfaces
Batching and compressing messages in a configurable manner for improved performance
Optional rate limiting of messages on a per-topic basis. This guards against buggy client code overwhelming the Kafka cluster with too many messages.
bruce --msg_buffer_max 65536 --receive_socket_name /var/run/bruce/bruce.socket --config_path /etc/bruce/bruce_conf.xml --log_echo --log_level LOG_DEBUG