Lake - Erlang RabbitMQ Streams Client

Hi!

Some of you may have read the RabbitMQ announcement of Streams.

To quote the announcement:

A RabbitMQ stream models an append-only log with non-destructive consuming semantics. This means that – contrary to traditional queues in RabbitMQ – consuming from a stream does not remove messages.

As far as I can tell, there are currently a Java and Go client to connect to RabbitMQ streams, but no Erlang or Elixir client. To take Streams for a spin, we thus wrote a simple Erlang library called lake. The library misses features such as handling clustering, but it works to give streams a try from Erlang and Elixir. See the repository for a usage example.

I hope somebody here finds lake useful!

P.s. This is a cross-post from the elixir forum. I thought people here might also find the library interesting.

13 Likes

As mentioned in the elixir forum, I just released v0.2.0 of lake. The API is still very rough and not really user friendly, but playing around with Streams works. With v0.2.0, SuperStreams can also be used. Note that they need to be created outside of lake, either with rabbitmqctl or with AMQP (see lake_SUITE for an example on how to do that).

2 Likes