Reputation: 301
I'm currently configuring the redelivery by creating a bean and setting it on the amq connectionFactory. The problem is that for one of my queues I need to set a different redelivery policy (a maximum redeliveries number of 3, not 6). Right now I'm using ActiveMQ-5.6.0. I can see that for 5.7.0 I can set different policies for queues/topics but there's no mention of setting a specific policy for only one of the queues.
<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>
Upvotes: 0
Views: 567
Reputation: 109
Recently I've created something similar but I didn't operate on spring bean annotations. But maybe it will help. I base on broker plugin which I attached to it Here you have RedeliveryPolicy:
private RedeliveryPolicy redeliveryPolicy() {
RedeliveryPolicy queuePolicy = new RedeliveryPolicy();
return queuePolicy;
}
You have to create BrokerPlugin[]
private BrokerPlugin[] createBrokerPlugin() {
BrokerPlugin[] bp = new BrokerPlugin[1];
RedeliveryPlugin redeliveryPlugin = new RedeliveryPlugin();
redeliveryPlugin.setRedeliveryPolicyMap(createRedeliverPolicy(connectionFactory));
bp[0] = redeliveryPlugin;
return bp;
}
when you have Brokerplugin array you can easily add it to your embeded broker:
@Bean
public Broker broker() throws Exception {
BrokerService broker = new BrokerService();
broker.setBrokerName(BROKER_NAME);
broker.setPlugins(createBrokerPlugin());
broker.start();
return broker.getBroker();
}
Upvotes: 1