2013-05-03 41 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

相關問題