README.md
# RabbitMQStream - WIP
[![Version](https://img.shields.io/hexpm/v/rabbitmq_stream.svg)](https://hex.pm/packages/rabbitmq_stream)
[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen.svg)](https://hexdocs.pm/rabbitmq_stream/)
[![Download](https://img.shields.io/hexpm/dt/rabbitmq_stream.svg)](https://hex.pm/packages/rabbitmq_stream)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
Elixir Client for [RabbitMQ Streams Protocol](https://www.rabbitmq.com/streams.html).
## Getting started
This project is currently under development and missing most of the features a full client needs. The current aim is to make it feature complete before writting a _Getting started_ documentation.
## Progress
This implementation is following the protocol defined in the RabbitMQ's repository, seen [here](https://github.com/rabbitmq/rabbitmq-server/blob/master/deps/rabbitmq_stream/docs/PROTOCOL.adoc).
Here is the set of messages with handlers currently implemented:
| Command | Status | Description |
| ---------------------- | ------ | ----------------------------------------- |
| DeclarePublisher | ✅ | -- |
| Publish | ✅ |
| PublishConfirm | ✅ |
| PublishError | ✅ |
| QueryPublisherSequence | ✅ | -- |
| DeletePublisher | ✅ | -- |
| Subscribe | ⏳ |
| Deliver | ⏳ |
| Credit | ⏳ |
| StoreOffset | ✅ | Stores a stream offset under given `name` |
| QueryOffset | ✅ | Retrieves a stored offset |
| Unsubscribe | ⏳ |
| Create | ✅ | Create a Stream |
| Delete | ✅ | Delete a Stream |
| Metadata | ✅ | -- |
| MetadataUpdate | ✅ | -- |
| PeerProperties | ✅ | -- |
| SaslHandshake | ✅ | -- |
| SaslAuthenticate | ✅ | -- |
| Tune | ✅ | -- |
| Open | ✅ | -- |
| Close | ✅ | -- |
| Heartbeat | ✅ | -- |
## Roadmap
- [_Well-behaved_](https://blog.rabbitmq.com/posts/2021/07/connecting-to-streams/#:~:text=Well%2Dbehaved%20Clients) Cluster connection
- Workaround for connecting throught [load balancers](https://blog.rabbitmq.com/posts/2021/07/connecting-to-streams#:~:text=Client%20Workaround%20With%20a%20Load%20Balancer)
## Future Plans
- Broadway Producer implementation using this client.