Everybody who uses AMQP in PHP must be aware of php-amqplib. It is very popular and in addition, it is used on RabbitMQ offsite in its tutorials. These tutorials cover the basics of creating messaging applications using RabbitMQ.

While teaching you basics they also teach you how to do stuff using one particular library but there are others AMQP clients out there. There isn’t the best one, they all have their pros and cons. Each library does everything in its own unique way and you have to learn it if you are going to use it. Besides, All of them are still implementations of AMQP specification which is set in stone but you’ve got your work cut out for you if you think you can migrate a project from one library to another. To make matters worse, there are a lot of bundles, bridges and packages built on top of them and that code base is not interchangeable. There is no way you can use RabbitMqBundle with php-amqp extension for example. Just imagine how much code duplication is there.

Now it should be obvious the current state isn’t good and we have a solution.

I am a co-founder and a big fan of queue interop group. The group tries to identify and standardize a common way for PHP programs to create, send, receive and read MQ messages to achieve interoperability.

We’ve already implemented three AMQP interop clients: enqueue/amqp-lib uses php-amqplib internally, enqueue/amqp-bunny is based on bunny lib and the last one enqueue/amqp-ext works on top of php-amqp extension. They are interchangeable and obviously share the same API.

So the best way to demonstrate the interop greatness is to show real examples and for that we took and adopt the official tutorials.

That’s very important for us and PHP community as a whole to make it popular. You could help us spread the word either: telling about us on twitter, or by staring queue interop repository.

And of course we are looking forward to getting in touch with you. Send us your feedback at opensource@forma-pro.com.