AMQProxy - an intelligent AMQP proxy

An intelligent AMQP proxy with AMQP connection and channel pooling/reusing. Allows e.g. PHP clients to keep long lived connections to upstream servers, increasing publishing speed with a magnitude or more.

In the AMQP protocol, if you open a connection the client and the server has to exchange 7 TCP packages. If you then want to publish a message you have to open a channel which requires 2 more, and then to do the publish you need at least one more, and then to gracefully close the connection you need 4 more packages. In total 15 TCP packages, or 18 if you use AMQPS (TLS). For clients that can't for whatever reason keep long-lived connections to the server this has a considerable latency impact.

Marten 0.2 has been released!

Marten 0.2 has been released! 🚀


Marten is a Crystal web framework that makes building web applications easy, productive, and fun. The 0.2 release adds key features to the framework such as authentication, email sending, raw SQL query capabilities, ... You can check out the full changelog for an overview of all the new features and changes that are part of this release.

Main new features

  • Email sending - Marten now allows the definition of emails that can be fully customized (properties, header values, etc) and whose bodies (HTML and/or text) are rendered by leveraging templates.
  • Authentication - The framework now provides the ability to generate projects with a built-in authentication system that handles basic user management needs: signing in/out users, resetting passwords, etc. This can be achieved through the use of the --with-auth option of the new management command.
  • Raw SQL capabilities - Query sets now provide the ability to perform raw SQL queries that are mapped to actual model instances.
  • Email field for models and schemas - It is now possible to define email fields in models and schemas. These allow you to easily persist valid email addresses in your models but also to expect valid email addresses in data sets validated through the use of schemas.
  • Transaction callbacks - Models now support the definition of transaction callbacks by using the #after_commit and #after_rollback macros.

What’s next?

The Marten framework is still young, and as such, any feedback from people who would like to play with it and/or leverage it in simple projects would be greatly appreciated!

If you find a bug or if you want to contribute and share ideas regarding the framework, don’t hesitate to open an issue/discussion in the project’s issue tracker on GitHub or chat with us in our Discord.

And if you are new to Marten, here are a few ideas on how you can get started: