You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ActiveMQ Artemis是否支持客户端侧配置消息重分发?

你的结论不完全正确,ActiveMQ Artemis 同时支持 Broker 端和客户端侧配置消息重分发规则,并非只能通过 broker.xml 配置。

配置规则说明

  • Broker 端 broker.xml 中配置的重分发规则为全局默认规则,默认情况下客户端侧配置的优先级更高,会覆盖当前连接关联的所有消费者的重分发策略。
  • 若 Broker 端对应地址的配置中开启了 override-redelivery-settings 参数,会强制以 Broker 端的重分发配置为准,此时客户端配置不生效。

Spring Boot 2.x 客户端侧配置方法

你可以通过以下两种方式配置客户端重分发策略:

1. Broker URL 参数配置

直接在连接地址后追加重分发相关参数即可,示例:

tcp://你的Broker地址:61616?jms.redeliveryPolicy.maxRedeliveries=3&jms.redeliveryPolicy.redeliveryDelay=1000

常用客户端重分发参数如下:

  • jms.redeliveryPolicy.maxRedeliveries:最大重发次数,超过阈值后消息会被转入死信队列
  • jms.redeliveryPolicy.redeliveryDelay:首次重发的延迟时间,单位为毫秒
  • jms.redeliveryPolicy.maxRedeliveryDelay:重发最大延迟时间,避免指数退避时延迟过高
  • jms.redeliveryPolicy.backOffMultiplier:延迟退避倍数,开启指数退避后每次重发延迟会乘以该倍数

2. application.yml + 自定义 Bean 配置

如果使用官方 Artemis Starter,也可以通过显式注入重分发策略 Bean 的方式实现配置:

  1. application.yml 基础连接配置:
spring:
  artemis:
    mode: native
    broker-url: tcp://你的Broker地址:61616
    user: 账号
    password: 密码
  jms:
    listener:
      acknowledge-mode: client
  1. 自定义配置类注入重分发策略:
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.jms.client.RedeliveryPolicy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ArtemisConfig {

    @Bean
    public RedeliveryPolicy customRedeliveryPolicy() {
        RedeliveryPolicy policy = new RedeliveryPolicy();
        // 最大重发3次
        policy.setMaxRedeliveries(3);
        // 首次重发延迟1秒
        policy.setRedeliveryDelay(1000);
        // 开启指数退避
        policy.setUseExponentialBackOff(true);
        // 退避倍数2
        policy.setBackOffMultiplier(2);
        // 最大重发延迟不超过10秒
        policy.setMaxRedeliveryDelay(10000);
        return policy;
    }

    @Bean
    public ActiveMQConnectionFactory connectionFactory(RedeliveryPolicy customRedeliveryPolicy) {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://你的Broker地址:61616");
        factory.setRedeliveryPolicy(customRedeliveryPolicy);
        return factory;
    }
}

内容的提问来源于stack exchange,提问作者Ponaf Sonaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:06:01