Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rabbitmq-amqp-java-client amqp 1.0 support #2919

Open
artembilan opened this issue Dec 4, 2024 Discussed in #2918 · 9 comments
Open

rabbitmq-amqp-java-client amqp 1.0 support #2919

artembilan opened this issue Dec 4, 2024 Discussed in #2918 · 9 comments

Comments

@artembilan
Copy link
Member

Discussed in #2918

Originally posted by bilak December 4, 2024
Hey,
is there a plan to support rabbitmq amqp 1.0 library?

@artembilan artembilan added this to the Backlog milestone Dec 4, 2024
@csp1992
Copy link

csp1992 commented Jan 15, 2025

Hello, I have the same question. There is a official support of amqp 1.0 in spring boot 3?. Any plans of support in this library?

@artembilan
Copy link
Member Author

According to some resources in the Internet we can use JMS auto-configuration in Spring Boot to talk to AMQP 1.0 protocol: https://github.com/amqphub/amqp-10-jms-spring-boot/tree/main/amqp-10-jms-spring-boot-examples.

We don't deny this issue since it would bring a Spring-friendly API over the mentioned rabbitmq-amqp-java-client library.

@JimmyWang6
Copy link

Hi @artembilan, as mention above, I am willing to handle this issue. Do you know if this issue already started?

@artembilan
Copy link
Member Author

Yes, my plan is to start looking into this from next Monday.
However you are free to share your vision for this new module:

  1. What its name?
  2. How do we manage connection(s)?
  3. Do you foresee Amqp10Template (similar to RabbitTemplate) implementation?
  4. What is your thought about @RabbitListener support? Or we might have an @Amqp10Listener instead?

I'm opened for any suggestions

Thank you!

@artembilan
Copy link
Member Author

OK. I have started working on this.
So far I have:

  1. Module name is spring-rabbitmq-client - we kinda anticipate that this one would be a default in the future with slow 0.9.1 support sunset.
  2. I wrote AmqpConnectionFactoryBean to manage AMQP connection object in Spring manner. This is the most important and shared component between the rest of the API.
  3. The RabbitAmqpAdmin - similar to RabbitAdmin, but with the logic based on the AMQP 1.0 client. We cannot live without topology, so it is better to have it automatically initialized from respective Declarable beans like we do for 0.9.1 support.
  4. Have started RabbitAmqpTemplate for the Spring-friendly Publisher API.

Wanted to push and share already, but stuck with so much code to do.
Therefore expect something from me in the nearest future. Maybe tomorrow/after tomorrow.

@making
Copy link
Member

making commented Feb 26, 2025

I'm keeping an eye on this effort.

It looks like Quarkus already supports AMQP 1.0.
https://quarkus.io/guides/amqp-reference

I was hoping this client could be used to access other AMQP 1.0-enabled products, such as Azure Service Bus. Is that out of scope? RabbitAmqpTemplate sounds like it's for RabbitMQ.

@artembilan
Copy link
Member Author

That’s correct, @making .
This module is based on the RabbitMQ Java client for only RabbitMQ AMQP 1.0 support.
There is no guarantee that it may work with other AMQP 1.0 providers.

We always recommended to use JMS API to communicate with AMQP 1.0 brokers .
With our experience there is just no reason for paradox of choice adding extra generic AMQP 1.0 capabilities to Spring.

@artembilan
Copy link
Member Author

See more info here: #2217

@artembilan artembilan modified the milestones: Backlog, 4.0.0-M2 Feb 26, 2025
@artembilan
Copy link
Member Author

So, I have just pushed spring-rabbitmq-client module with few important classes:

  1. AmqpConnectionFactoryBean to expose Connection object configuration in Spring manner. Requires Environment from RabbitMQ AMQP Client.
  2. RabbitAmqpAdmin implements AmqpAdmin for API to handle topology in Spring manner. The most important part that it can deal with Declarable bean. Just exactly similar to the RabbitAdmin, but over AMQP 1.0 protocol with RabbitMQ.
  3. RabbitAmqpTemplate with async send and receive operation implementations (for now).

See more info in the linked sub-issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants