JMeter执行JMS测试时消息直接进入ActiveMQ Dead Letter Box.queue问题求助
消息进入ActiveMQ死信队列导致前端无轨迹展示的常见原因
你提到的DLB.queue大概率是ActiveMQ默认死信队列DLQ(Dead Letter Queue)的笔误,消息进入死信队列的常见原因如下:
消费侧异常
- 负责处理轨迹消息的消费者服务未正常启动、处于宕机状态,消息长时间未被消费,超过ActiveMQ配置的消息存活时间阈值后被送入死信队列
- 消费者监听的队列/Topic名称、权限配置错误,无法正常读取JMeter发送的轨迹消息,消息无人消费最终进入死信队列
- 消费者业务逻辑异常:拿到消息后解析格式、校验必填字段、写入数据库、推送给前端的逻辑抛出未捕获异常,且重试次数达到ActiveMQ配置的
maximumRedeliveries上限,消息被送入死信队列 - 消费者开启了事务,消费过程中事务回滚次数超过配置的重发上限,消息被判定为无法处理进入死信队列
消息配置异常
- JMeter的JMS发布组件配置的
JMSExpiration过期时间过短,消息还未被消费者消费就已经过期,直接进入死信队列 - 消息payload格式和消费者约定不符,比如发送的JSON结构缺少轨迹必填的时间戳、坐标、设备ID等字段,消费者反复解析失败后消息被送入死信队列
- 单条轨迹消息大小超过ActiveMQ或消费者设置的消息大小阈值,被直接拒绝进入业务队列,送入死信队列
ActiveMQ服务端配置异常
- ActiveMQ配置的业务队列最大容量已被占满,新发送的轨迹消息无法进入队列等待消费,被直接送入死信队列
- ActiveMQ的路由规则配置错误,误将轨迹消息所在的Topic/队列的消息直接路由到死信队列
内容的提问来源于stack exchange,提问作者Taz 3497
相关产品推荐
相关产品推荐

