2014-10-09 176 views
1

我想找到方法來聲明隊列等,在應用程序啓動時它們會自動創建。我知道這可以通過添加通過Java代碼創建隊列來完成,但理想情況下,如果Spring Boot將基於xml配置配置我的RabbitMQ環境,那將會很不錯。我試圖創建一個沒有運氣的resources.xml文件。所以我想知道這是否有可能?如何讓Spring Boot根據外部配置配置RabbitMQ配置?

任何提示如何進行或一些例子如何做到這一點?

+0

請更具體地瞭解您嘗試設置的內容。 Spring Boot(和/或Spring Cloud連接器)將設置與代理的連接,並且附加到特定的端點通常是您使用Spring Integration進行的操作。 – chrylis 2014-10-09 17:14:03

+0

在使用Grails完成的一個寶貴項目中,我能夠在外部文件中定義隊列等,如果它們不存在,那麼它們將被創建而不必在代碼中處理它們。 此外,交換綁定隊列可以通過配置它們來完成。示例如下:http://grails-plugins.github.io/grails-rabbitmq/docs/manual/guide/configuration.html 所以我想知道這是否也可以在Spring Boot中完成,但也許的確如此添加對我而言是新的Spring Integration。 – Marco 2014-10-09 17:28:39

+0

你能舉一個你在用Grails做什麼的例子嗎? – chrylis 2014-10-09 17:29:52

回答

3

要允許Spring AMQP在應用程序啓動時填充AMQP對象,必須將它們聲明爲bean並使用<rabbit:>名稱空間進行XML配置以簡化您的生活。

Somethis這樣的:

<rabbit:queue name="my.queue" /> 

<rabbit:direct-exchange name="my.exchange"> 
    <rabbit:bindings> 
     <rabbit:binding queue="my.queue" key="my.routingKey" /> 
    </rabbit:bindings> 
</rabbit:direct-exchange> 

當你在resources.xml這個配置,你將能夠import它的主引導配置:

@Configuration 
@EnableAutoConfiguration 
@ImportResource("classpath:com/my/proj/configs/resources.xml") 
public class MyConfiguration { 
} 

由於春季啓動自動配置,它會生成RabbitAdmin bean,以便我們在啓動時填充這些AMQP對象。

+0

爲了清楚起見,我必須使用rabbitAdmin bean手動創建隊列和交換? – Marco 2014-10-09 19:35:14

+0

不,'RabitAdmin' bean可以幫你:http://docs.spring.io/spring-amqp/docs/latest-ga/reference/html/amqp.html#automatic-declaration – 2014-10-09 20:14:32

+0

Txs Artem!它現在完美工作! – Marco 2014-10-10 15:23:17