VictorGaiva / rabbitmq-stream

Elixir Client for RabbitMQ Streams Protocol.
MIT License
25 stars 3 forks source link

Subscripting to replicas other than the main might cause it to fail. #12

Open VictorGaiva opened 7 months ago

VictorGaiva commented 7 months ago

Problem

In some scenarios, a Consumer fails to startup because it receives a {:error, :stream_not_available} when calling RabbitMQStream.Connection.subscribe/5.

Initially it seemed that this happened when although the tcp/ssl connection would already be open, the authentication process was not yet complete. But later It I found out that it actually happened when attempting to connect to a replica other than the Main for that stream.

Solution

Implement an abstraction on top of RabbitMQStream.Connection that auto-discovers all the nodes and routes each requests based on the defined metadata

Testing

Add replication to the services setup and create related tests.

VictorGaiva commented 7 months ago

Reopening this issue as it is still present.

VictorGaiva commented 4 months ago

Updated the description describing the mapped issue after the root cause was found.