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("删除死信队列失败!");
    }
}
相关推荐
霸道流氓气质3 分钟前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
captain37634 分钟前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02141 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
步行cgn1 小时前
Spring MVC + Thymeleaf 模板解析失败:从 500 错误到页面正常显示
java·spring·mvc
IT_陈寒2 小时前
Java序列化踩坑记:对象循环引用让我加班两小时
前端·人工智能·后端
lgcgkCQ2 小时前
【AI 转型实战 1】SpringAI 入门:搭建基础大模型对话能力
java·ai·agent·rag·spring ai·mcp·langchain4j
泡海椒2 小时前
05-雷达图多维画像-信用评级多维画像
后端
王中阳Go2 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
大哥43092 小时前
Modbus 的"字序":一个配错就变成天文数字,或者干脆变成 0
后端
Wang's Blog2 小时前
Java 项目实战:交友项目 - 用户体系集成总结
java·开发语言·交友