<div dir="ltr"><div>Hi,<br><br></div>At Shopgun, we've just Open Sourced our "turtle" application:<br><br><a href="https://github.com/shopgun/turtle" target="_blank">https://github.com/shopgun/turtle</a><br><br>The turtle application is built to be a wrapper around the RabbitMQ standard Erlang driver. The purpose is to enable faster implementation and use of RabbitMQ by factoring out common tasks into a specific application targeted toward ease of use.<br><br>The secondary purpose is to make the Erlang client better behaving toward an OTP setup. The official client makes lots of assumptions which are not always true in an OTP setting.<br><br>The features of turtle are:<br><br>Maintain RabbitMQ connections and automate re-connections if the network is temporarily severed. Provides the invariant that there is always a process knowing the connection state toward RabbitMQ. If the connection is down, you will receive errors back.<br><br>Provide support for having multiple connection points to the RabbitMQ cluster. On failure the client will try the next client in the group. On too many failures on a group, connect to a backup group instead. This allows a client the ability to use a backup cluster in another data center, should the primary cluster break down.<br><br>Support easy subscription where each received message is handled by a stateful callback function supplied by the application.<br><br>Support easy message sending anywhere in the application by introducing a connection proxy.<br><br>Support RPC style calls in RabbitMQ over the connection proxy. This allows a caller to block on an AMQP style RPC message since the connection proxy handles the asynchronous non-blocking behavior.<br><br>Tracks timing of most calls. This allows you to gather metrics on the behavior of underlying systems and in turn handle erroneous cases proactively.<br clear="all"><div><div><br>-------------------<br><br></div><div>We are using the application in several setups internally, and it has already helped us more than once. It bears some resemblance with other applications which has been written in the same area, such as MochiMedias gen_bunny, or as I've seen them as closed source implementations. This is a rewrite, focusing on the support of RPC style messaging with timing deadlines.<br><br></div><div>I'm interested in speaking to potential users of turtle, so we can help each other. Also, please get in touch if you need a dependency broken or altered for you to be able to use it.<br><br></div><div>The documentation is written with a users guide in the README.md, which I hope is good enough for people to be able to get started. If not, please open an Issue :)<br><br></div><div>On behalf of the Shopgun team,<br><br></div><div>-- <br><div>J.</div>
</div></div></div>