2013-05-03 60 views
0

我正计划在我的项目中使用RabbitMQ作为AMQP实现。 但我想限制自己只使用AMQP规范,不使用任何RabbitMQ extensions to AMQP如何让编译器限制我使用任何RabbitMQ AMQP扩展?

有没有办法让编译器离开这个'spec-safety'检查? 例如:如果有一个RabbitMQ的仅限AMQP规范的库,那么通过只包含这个库,我可以让它留给编译器来抱怨,每次我尝试使用扩展时(因为它找不到定义/实现AMQP规范库中的扩展)。

我想这样做,所以如果我尝试切换到不同的AMQP实现,它会更容易! (我打算使用Spring Integration从底层的AMQP实现中抽象出来)。

回答

1

我会先用兔人检查...

https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss

Spring的抽象只是坐在RabbitMQ的Java客户端的顶部。

虽然Spring-AMQP(以及Spring Integration)提供了一个AMQP的一般抽象,但是我们目前只有一个具体的Rabbit实现。它可能会或可能不会与其他经纪人合作,只要RabbitMQ客户将这样做。

如果需要,我们希望对其他抽象实现的贡献表示欢迎。

+0

是的。这是一个rabbitmq问题,而不是Spring问题。您的声明“[Spring-AMQP]可能会或可能不会与其他经纪人合作。”让我感到害怕,因为它是由Spring集成团队成员制作的!但我很欣赏诚实!可能是我天真地认为像Spring-AMQP这样的项目应该将自己限制在AMQP规范中,并忽略实现的自定义扩展! – brainOverflow 2013-05-03 23:24:43

+0

如果我只是使用Spring的AmqpTemplate(而不是由RabbitTemplate添加的)方法,那么尽管我实例化了RabbitTemplate,但我应该能够避免AMQP实现依赖关系? – brainOverflow 2013-05-03 23:49:54

+0

我的意思是我们使用底层的Rabbit Java客户端; Spring-AMQP将与其他经纪商合作,以便Rabbit Java客户端与其他经纪商合作。 Spring-AMQP旨在作为一种机制来提供对* any * java客户端的抽象;与'spring-amqp'项目中的一般抽象以及'spring-rabbit'项目中对RabbitMQ java客户端的抽象相关。 如果出于某种原因(与一些其他经纪人),兔子客户端不能为你工作,那么spring-xxx项目可以提供,同时为应用程序保持一致的API。 – 2013-05-03 23:54:51