Spring Boot的ActiveMQ配置

时间:2015-05-15 10:08:04

标签: java spring-boot activemq

我使用ActiveMQ作为嵌入式Spring Boot。 似乎Broker是通过ActiveMQConnectionFactory创建的。 我知道配置代理的方法是使用代理在查询中设置参数。如下所述:http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html

我想设置一些关于DLQ的功能,所以它在destinationPolicy属性中,但属性类型不是简单类型而是复杂类型,如何编写查询参数来禁用DLQ,拜托?

3 个答案:

答案 0 :(得分:3)

好问题。用于自动代理创建的vm-transport的属性非常好,但只能达到我认为你已经达到的程度。

我的建议是你通常用XML来定义代理配置,然后在URI中引用这个xml。目标政策确实是一个复杂的结构,我不知道用简单的查询参数定义它们是多么好的主意,即使它是可能的。

vm://localhost?brokerConfig=xbean:activemq.xml 

答案 1 :(得分:2)

补充@Petter和@April答案,在相同的解决方案下面,但有更完整的样本:

1. Petter solution, import activemq.xml at connnection factory url

<强>的build.gradle

=IF(ISERROR(LEFT(D2,FIND("_",D2)-1)),"",LEFT(D2,FIND("_",D2)-1))

<强>的src /主/资源/ activemq.xml中

ext {
    springBootVersion = "1.5.3.RELEASE"
    activeMQVersion = "5.14.5"
}

dependencies {

    compile("org.springframework.boot:spring-boot-starter-activemq:${springBootVersion}")
    compile("org.apache.activemq:activemq-broker:${activeMQVersion}")

    testCompile("org.springframework.boot:spring-boot-starter-test:${springBootVersion}")
    testCompile group: 'org.apache.activemq', name: 'activemq-spring', version: "${activeMQVersion}"
    testCompile("junit:junit:4.12")

}

<强> Config.java

<beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:amq="http://activemq.apache.org/schema/core"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://activemq.apache.org/schema/core
                http://activemq.apache.org/schema/core/activemq-core-5.4.0.xsd
        ">
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker1" persistent="false" >
        <transportConnectors>
            <transportConnector name="vm" uri="vm://broker1"/>
        </transportConnectors>
    </broker>
</beans>

<强> application.properties

@EnableJms
@SpringBootApplication
@EnableAutoConfiguration
@Configuration
public class Config {}

2. April solution, import activemq.xml at Spring Configuration

只需删除spring.activemq.broker-url=vm://broker1?brokerConfig=xbean:activemq.xml ,然后将application.properties条目添加到 Config.java

<强> Config.java

@ImportResource("classpath:activemq.xml")

答案 2 :(得分:1)

我遇到了这个问题,并使用弹簧配置文件解决了这个问题。就我而言,我想配置我的经纪人继续。

我在我的pom中添加了所需的库:包括activemq-broker,activemq-spring,spring-jms(以及我的情况下,activemq-leveldb-store)。

我的spring xml文件看起来像这样:

<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

 <broker xmlns="http://activemq.apache.org/schema/core" brokerName="xyz">
      <persistenceAdapter>
        <levelDB directory="activemq-data"/>
      </persistenceAdapter>

    <transportConnectors>
      <transportConnector uri="vm:localhost?persistent=true" />
    </transportConnectors>

  </broker>
</beans>

我在一个配置类中注册了spring文件:

@ImportResource("activemq-spring.xml")

这就完成了工作。

我首先尝试了xbeans解决方案,但是我因为缺少一些xbeans类而陷入困境,而且我不知道它是版本还是什么。我使用的是activemq 5.12.1