我是RabbitMq和Spring AMQP的新手。 我正在从头开始构建一个新项目。这里是我们使用rabbit-Mq作为消息代理的组件之一。
在这个项目中,主要是所有开发都在Java中进行。我们通常将Spring用于某些组件。
现在,使用Erlang编写的rabbit-mq确实提供了一个干净的Java Api。还有spring amqp,它提供了一个很好的接口来支持松散耦合(通过AMQPTemplate等)。
我想到使用SpringAMQP的一个优点是,由于上面提到的松散耦合,明天如果我们必须使用AMQP的任何其他实现而不是rabbit-Mq(spring-rabbit)我不必更改我的代码。但正如我所看到的,今天的实施是针对兔子MQ并且除非特殊情况,我在这里看不到任何事情。我们应该在近乎可预见的未来使用rabbit-Mq,也不确定除了rabbitMq之外是否还有其他消息代理实现在spring amqp方面。
我认为缺点是我完全不了解RabbitMq提供的实际客户端API,因为Spring AMQP给出了抽象(除非我决定深入挖掘)。
在这种情况下,SPRING AMQP提供的传统rabbitMq Java API还有其他优势吗?
谢谢
答案 0 :(得分:7)
春季AMQP坐在"顶部" RabbitMQ amqp-client
java库,将熟悉的Spring编程模型带到RabbitMQ。
它提供了类似于Spring JMS用户习惯的功能,包括消息驱动的POJO和RabbitTemplate
。
与所有Spring *Template
一样,RabbitTemplate
消除样板代码,自动清理资源,参与现有的rabbitmq事务等,同时仍允许您下载到本机API,如果您有高级API不满意的高级需求(这种情况有点罕见)。因此,使用一个并不排除另一个。
披露:我是项目负责人。
答案 1 :(得分:1)
这不是其他人可以回答的问题。您和您的团队必须决定什么对您的团队最有利。
如果您的团队已经使用spring并且对此感到满意,请使用spring amqp提供程序。
如果你不想再被绑在春天,直接使用rabbitmq库。
选择一个并坚持下去。你会因此而变得富有成效,而且你选择另一个并不重要。