【问题标题】:How to let Spring Boot configure RabbitMQ configuration based on externalised config?如何让 Spring Boot 基于外部化配置配置 RabbitMQ 配置?
【发布时间】:2014-10-09 17:06:24
【问题描述】:

我正在尝试以一种在应用程序启动时自动创建队列等的方式来声明队列等。我知道这可以通过通过 Java 代码添加队列的创建来完成,但理想情况下,如果 Spring Boot 将基于 xml 配置配置我的 RabbitMQ 环境会很好。到目前为止,我尝试创建一个 resources.xml 文件,但没有成功。所以我想知道这是否可能?

关于如何进行的任何提示或一些如何做到这一点的示例?

【问题讨论】:

  • 请更具体地说明您要设置的具体内容。 Spring Boot(和/或 Spring Cloud 连接器)将设置您与代理的连接,并且附加到特定端点通常是您使用 Spring Integration 之类的东西。
  • 在一个使用 Grails 完成的宝贵项目中,我能够在外部文件中定义队列等,如果它们不存在,则无需在代码中处理它们就可以创建它们。也可以通过配置它们来完成与交换的绑定队列。示例在这里:grails-plugins.github.io/grails-rabbitmq/docs/manual/guide/… 所以我想知道这是否也可以在 Spring Boot 中完成,但也许我确实必须添加对我来说是新的 Spring Integration。
  • 您能举一个例子说明您使用 Grails 所做的事情吗?

标签: java spring rabbitmq spring-boot


【解决方案1】:

要允许 Spring AMQP 在应用程序启动时填充 AMQP 对象,您必须将它们声明为 bean 并使用 <rabbit:> 命名空间进行 XML 配置以简化您的工作。

像这样的:

<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 {
}

感谢 Spring Boot 自动配置,它为我们生成 RabbitAdmin bean 以在启动时填充这些 AMQP 对象。

【讨论】:

猜你喜欢
  • 2019-08-17
  • 2017-11-26
  • 2018-12-13
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 2014-10-10
相关资源
最近更新 更多