2016-09-15 1 views
0

私は現在、Beanを作成し、それをamq connectionFactoryに設定することで再配信を設定しています。問題は、私のキューの1つで、別の再配信ポリシーを設定する必要があるということです(6回ではなく、最大3回の再配信数)。今はActiveMQ-5.6.0を使用しています。 5.7.0では、キュー/トピックに異なるポリシーを設定できますが、キューのうちの1つのみに特定のポリシーを設定することについては言及していません。特定のキューのActiveMQカスタム再配信ポリシー

<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

最近、私は類似のものを作成しましたが、私は春のビーンアノテーションでは動作しませんでした。しかし、おそらくそれが助けになるでしょう。私はあなたがRedeliveryPolicyを持って、私はここでそれに を接続ブローカーのプラグインでベース:

private RedeliveryPolicy redeliveryPolicy() { 
    RedeliveryPolicy queuePolicy = new RedeliveryPolicy(); 
    return queuePolicy; 
} 

あなたはBrokerplugin配列を持っているときに簡単に埋め込まに追加することができBrokerPlugin []

private BrokerPlugin[] createBrokerPlugin() { 
    BrokerPlugin[] bp = new BrokerPlugin[1]; 
    RedeliveryPlugin redeliveryPlugin = new RedeliveryPlugin(); 
    redeliveryPlugin.setRedeliveryPolicyMap(createRedeliverPolicy(connectionFactory)); 
    bp[0] = redeliveryPlugin; 
    return bp; 
} 

を作成する必要がありますブローカー:

@Bean 
public Broker broker() throws Exception { 
    BrokerService broker = new BrokerService(); 
    broker.setBrokerName(BROKER_NAME); 
    broker.setPlugins(createBrokerPlugin()); 
    broker.start(); 
    return broker.getBroker(); 
} 
関連する問題