我使用ActiveMQ作为嵌入式Spring Boot。 似乎Broker是通过ActiveMQConnectionFactory创建的。 我知道配置代理的方法是使用代理在查询中设置参数。如下所述:http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html
我想设置一些关于DLQ的功能,所以它在destinationPolicy属性中,但属性类型不是简单类型而是复杂类型,如何编写查询参数来禁用DLQ,拜托?
答案 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