java使用Map映射遍历方法

java使用Map映射方法

代码讲解

1 相同参数 没有返回值

bath 复制代码
    使用 Map<Integer, Consumer<MqDeadLetterInventory>>
    -- Consumer 用来统一对象
    -- MqDeadLetterInventory参数类型
    -- .get 获取对象
    -- .accept 执行对象

2 相同参数 有返回值

bath 复制代码
    使用 Map<Integer, Function<MqDeadLetterInventory, Result>>
    -- Function 用来统一对象
    -- MqDeadLetterInventory参数类型
    -- Result 结果
    -- .get 获取对象
    -- .apply 执行对象, 执行之后会有返回结果 Result

3 更多场景.....

js 复制代码
其他 参数不同 等场景,自行根据需求处理

4 注意事项

js 复制代码
 Map.of()
    -- 参数不能为null;
    -- 数量不能超过10条;

业务使用

java 复制代码
private void handleResend(MqDeadLetterInventory deadLetter) {
    if (deadLetter == null || deadLetter.getQueueType() == null) {
        return;
    }

    // 映射:队列类型 -> 对应的发送逻辑
    Map<Integer, Consumer<MqDeadLetterInventory>> sendActionMap = Map.of(
            MqConstants.INVENTORY_SKU_QUEUE, inventorySkuMqService::sendInventorySkuMq,
            MqConstants.INVENTORY_WAREHOUSE_QUEUE, inventoryWarehouseMqService::sendInventoryWarehouseMq,
            MqConstants.INVENTORY_INVOICE_QUEUE, invoiceStockMqService::sendInvoiceStockMq,
            MqConstants.INVENTORY_LOCATION_QUEUE, locationInventoryMqService::sendInventoryLocationMq
    );

    Integer queueType = deadLetter.getQueueType();
    Consumer<MqDeadLetterInventory> sendAction = sendActionMap.get(queueType);

    if (sendAction == null) {
        log.warn("未知的队列类型: {}", queueType);
        return;
    }

    // 执行发送
    sendAction.accept(deadLetter);

    // 删除死信记录
    int res = mqDeadLetterInventoryMapper.deleteMqDeadLetterInventoryById(deadLetter.getId(), deadLetter.getTenantId());
    if (res <= 0) {
        throw new ServiceException("删除死信队列失败!");
    }
}
相关推荐
IT_陈寒2 小时前
SpringBoot自动配置的坑,我的API突然就404了
前端·人工智能·后端
ServBay3 小时前
为什么说 MCP 是 2026 年开发者必须掌握的黄金协议?
后端·mcp
程序员夏洛3 小时前
Spring Boot 多模块项目中 IDEA 提示 Cannot resolve symbol 的一次排查记录
后端
子兮曰3 小时前
OpenMontage 深度解剖:你的 AI 编程助手,其实是个视频工作室
前端·后端·ai编程
子兮曰3 小时前
前端工具链的「Rust 化」:一场没有赢家的军备竞赛?
前端·后端·rust
爱勇宝4 小时前
从 Ctrl+CV 到 Enter:程序员正在失去什么
前端·后端·程序员
码事漫谈4 小时前
EdgeOne Makers + WorkBuddy:零基础也能快速搭建可上线的 AI 智能体(附图文教程)
后端
像我这样帅的人丶你还5 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩5 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
烤代码的吐司君5 小时前
Redis 数据结构 ZSet, BIT, HyperLogLog,Geo 空间数据
redis·后端