【问题标题】:ActiveMQ custom redelivery policy for a specific queue特定队列的 ActiveMQ 自定义重新传递策略
【发布时间】:2016-09-21 00:20:10
【问题描述】:

我目前正在通过创建一个 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>

【问题讨论】:

    标签: jms activemq spring-jms


    【解决方案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();
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-15
      • 2021-07-22
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2014-08-13
      • 1970-01-01
      相关资源
      最近更新 更多