// the find
dromara/myth
Reliable messages resolve distributed transactions
Myth is a Java library for eventual consistency in distributed transactions using reliable messaging — annotate a method with @Myth, and the framework ensures the downstream RPC call gets executed via MQ even if the caller crashes mid-flight. It targets teams already running Dubbo, Motan, or Spring Cloud with one of RabbitMQ/Kafka/RocketMQ/ActiveMQ in the stack.
The SPI extension model is well-thought-out: storage (Redis, MySQL, MongoDB, Zookeeper, file) and serialization (Kryo, Protostuff, Hessian, Java) are both pluggable without touching core code. Using LMAX Disruptor for the internal event pipeline is a sensible choice — transaction log writes are the hot path, and Disruptor keeps them off the calling thread. The admin dashboard for inspecting and replaying failed transaction logs is something most home-rolled eventual-consistency implementations skip entirely, and it matters in production. Multiple serializer options with Kryo and Protostuff included means you're not stuck paying Java serialization overhead.
Last meaningful commit was early 2024, and the project shows signs of slow decay — the README still references 'hmily-demo' in the demo module description, which is a copy-paste artifact from the sibling project. The approach is fundamentally at-least-once delivery with no idempotency helper included, so the burden of making consumers idempotent falls entirely on you. Documentation is sparse and largely in Chinese; the English README points to a Quick Start link that resolves to a dead domain. Support for Dubbo is explicitly capped at versions below 2.7, which is now ancient — anyone on a modern Dubbo stack is out of luck without forking.