我目前正在通过创建bean并在amq connectionFactory上设置它来配置重新传递。问题是,对于我的一个队列,我需要设置不同的重新传递策略(最大重新传输数量为3,而不是6)。现在我正在使用ActiveMQ-5.6.0。我可以看到,对于5.7.0,我可以为队列/主题设置不同的策略,但是没有提到仅为其中一个队列设置特定策略。
<amq:connectionFactory id="amqConnectionFactory">
<property name="brokerURL" value="url" />
<property name="redeliveryPolicy" ref="redeliveryPolicy" />
</amq:connectionFactory>
<bean id="redeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy">
<property name="backOffMultiplier" value="2" />
<property name="initialRedeliveryDelay" value="15000" />
<property name="maximumRedeliveries" value="6" />
<property name="redeliveryDelay" value="15000" />
<property name="useExponentialBackOff" value="true" />
</bean>
答案 0 :(得分:1)
最近我创建了类似的东西,但我没有使用spring bean注释。但也许它会有所帮助。我基于我附加的代理插件 在这里你有RedeliveryPolicy:
private RedeliveryPolicy redeliveryPolicy() {
RedeliveryPolicy queuePolicy = new RedeliveryPolicy();
return queuePolicy;
}
您必须创建BrokerPlugin []
private BrokerPlugin[] createBrokerPlugin() {
BrokerPlugin[] bp = new BrokerPlugin[1];
RedeliveryPlugin redeliveryPlugin = new RedeliveryPlugin();
redeliveryPlugin.setRedeliveryPolicyMap(createRedeliverPolicy(connectionFactory));
bp[0] = redeliveryPlugin;
return bp;
}
当你有Brokerplugin数组时,你可以轻松地将它添加到你的嵌入式代理:
@Bean
public Broker broker() throws Exception {
BrokerService broker = new BrokerService();
broker.setBrokerName(BROKER_NAME);
broker.setPlugins(createBrokerPlugin());
broker.start();
return broker.getBroker();
}