如何让Spring Boot根据外部配置配置RabbitMQ配置?

问题描述:

我想找到方法来声明队列等,在应用程序启动时它们会自动创建。我知道这可以通过添加通过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

要允许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