24、消息设计反模式与 Java 消息服务 API 解析

消息设计反模式与 Java 消息服务 API 解析

消息设计反模式

在消息处理系统中,常常会遇到各种问题,以下介绍两种常见的消息设计反模式。

消息优先级过度使用

在新订单队列中,可能存在 401 个待处理订单,且短时间内无法处理完。此时,在线客户正等待图书订单的响应。一种临时解决方案是使用消息优先级,为在线消息分配更高优先级,将其移至队列前端。然而,这种方法会导致另一个反模式——消息优先级过度使用。

例如,新图书订单来自在线渠道和批量渠道。使用消息优先级虽能让在线订单优先处理,但可能出现所有可处理高优先级消息的监听线程都被低优先级消息占用的情况,导致高优先级消息处理变慢。

假设批量订单因特殊验证和处理需 1 分钟,而在线订单仅需 200 毫秒。多数消息监听器会被批量订单占用,使在线订单仍需等待。此时,应将新订单队列拆分为在线新订单队列和批量新订单队列,为在线队列分配更多监听线程。

使用消息优先级时,需思考是否使用单独队列更合适,因为消息优先级常被用于掩盖更深层次的问题。

消息头误用

多数消息头属性由 JMS 提供程序设置,尽管 JMS API 向开发者暴露了设置方法,但这可能导致难以发现的错误,尤其是设置消息过期时间和优先级时。

消息过期时间设置错误示例

public class QBorrower {
   ...
   private void sendLoanRequest(double salary, double loanAm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值