Reliable and easy to use message broker built on top of Kafka.

Why Hermes?

publish by sending http post, consume by creating an http endpoint:
integrate with any technology in seconds

Hermes is reliable - never lose a message is our top priority, even when
all things go south

everything is measured, just gather the metrics in your metric store

Hermes is predicatble with guaranteed maximum response time - it's
easy to provide an SLA

with message tracking you always know how and when did the messages
go through your system

managing topics and subscriptions is easy with Hermes Console

you get all this at a price of sub-millisecond overhead over pure Kafka
(plus network transfer time)

Our story

allegro is Polish biggest ecommerce site. To sustain our growth, we came to the
point when technological revolution could no longer wait. Thus our migration from monolithic to
microservice architecture.

Soon it became apparent that there are no microservices without async communication and messaging. This
is when project Hermes first surfaced. We decided to build it on top of Kafka for its superb
performance and fault tolerance. However we were looking for a tool that would be easy to integrate with,
regardless of technology. It should also take care of corner cases and things that require expert
knowledge of Kafka design.

Hermes helps us integrate our 100+ microservices, at the same time being strongly focused on losing no
message. During our time serving production traffic, we encountered a lots of corner cases and situations,
where it was hard to keep Kafka cluster stable. Hermes with it's 100% message delivery guarantees
had to acquire features, that allow it on accepting traffic even when Kafka is down.

This is how Hermes became the heart of our new architecture, serving 5 500 rps of incoming and over
26 000 rps of outgoing traffic. Integrating Java, Python, Go and PHP. Allowing our developers to manage
their own topics and subscriptions. Making it easy to perform message retransmissions and
providing tools for debugging every single message.