SPRINGAMQP 或 RabbitMq Java API

SPRINGAMQP or RabbitMq Java API

我是 rabbitMq 和 Spring AMQP 的新手。 我正在从头开始构建一个新项目。这里我们使用 rabbit-Mq 作为消息代理的组件之一。

在这个项目中,主要是所有的开发都在 Java 中进行。对于某些组件,我们通常使用 Spring。

现在,rabbit-mq 虽然是用 Erlang 编写的,但确实提供了一个干净的 java Api。还有 spring amqp,它提供了一个很好的接口来支持松散耦合(通过 AMQPTemplate 等)。

我想到使用 SpringAMQP 的一个优点是,由于上面提到的松散耦合,明天如果我们必须使用 rabbit-Mq(spring-rabbit 之外的任何其他 AMQP 实现) 我不必更改我的代码。但正如我所见,今天的实施是针对 rabbit-Mq 的,除非有特殊情况,否则我看不到这里发生任何事情。我们应该在不久的可预见的将来使用 rabbit-Mq,并且也不确定 spring 除了 rabbitMq 之外的 amqp 端是否还有其他消息代理实现。

我认为的缺点是,由于抽象 Spring AMQP 提供(除非我决定深入挖掘),我无法理解实际的客户端 API RabbitMq 提供的。

在这种情况下,与传统的 rabbitMq 相比,AMQP 是否还有其他优势 SPRING Java API?

谢谢

这不是别人可以回答的问题。您和您的团队必须决定什么对您的团队最有利。

如果您的团队已经在使用 spring 并且对此感到满意,请使用 spring amqp 提供程序。

如果你不想再被 spring 束缚,直接使用 rabbitmq 库。

选择一个并坚持下去。你会变得富有成效,你没有选择另一个也没关系。

Spring AMQP 位于 "on top of" RabbitMQ amqp-client java 库中,并将熟悉的 Spring 编程模型引入 RabbitMQ。

它提供了与 Spring JMS 用户习惯的功能相似的功能,包括消息驱动的 POJO 和 RabbitTemplate

与所有 Spring *Template 一样,RabbitTemplate 消除了样板代码,自动清理资源,参与现有的 rabbitmq 事务等,同时仍然允许您删除如果您有更高级别 API 无法满足的高级需求(这种情况很少见),则可以使用本机 API。所以,使用一个并不排除另一个。

披露:我是项目负责人。