Skip to content

Investigate on the AMQP external clients to use #1

Closed
@DanielePalaia

Description

@DanielePalaia

Our RabbitMQ AMQP clients use an internal AMQP 1.0 lib to send an receive messages from the broker.

In case of Python there are two possibilities:

This is the client our RabbitMQ Java client is using.
Qpid proton for Python can be used directly as library.
It looks like the library is using some C code internally:
https://github.com/apache/qpid-proton/tree/main/python

I made a few tests (Connection, Declaration of Queues/Exchanges) and even if the library is not always well documented I was able to let it works for these use cases so I think we can proceed using it.

  • Reuse the code of the Azure Service bus:

We could reuse the code in:

https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/servicebus/azure-servicebus/azure/servicebus/_pyamqp

This was a rework of this original library:

https://github.com/Azure/azure-uamqp-python

That will be deprecated soon: Azure/azure-uamqp-python#374

This is the approach used by rstream (but just for the serialization part of the protocol).

While the original library was Cython base the one moved in the ServiceBus seems like to be "pure python"

The disadvantage is that it is not possible to import the library directly in the project but we will need to copy/paste the folder code in our project and possibly maintain that. Also I made a few tests and I wasn't able to fully let it work for our use case.

@Gsantomaggio @lukebakken : What do you think? I would probably proceed to include and use the qpid-proton lib if for you is fine. Do you see any drawbacks/alternatives we can use?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions