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 小时前
JAVA数据结构与算法 - 基础:队列 (Queue) 全方位解析
java·后端
JAVA面经实录9174 小时前
Java集合大全终极手册(一)
java·开发语言
IT策士4 小时前
Django 从 0 到 1 打造完整电商平台:为什么用 Django 做电商?
后端·python·django
Cosolar4 小时前
吃透 Spring Cloud Gateway:基于 Spring Boot 3 的核心原理、企业级实战与避坑指南
java·spring cloud·架构
千里马-horse4 小时前
gRPC -- Java 基础教程
java·开发语言·grpc
甲方大人请饶命4 小时前
Java-面向对象进阶(qqbb知识点)
java·开发语言
ChoSeitaku4 小时前
07_static_JavaBean_继承_super/this
java·开发语言
江南十四行4 小时前
并发编程(一)
java·jvm·算法
Dicky-_-zhang4 小时前
自动化运维实战:监控告警与自动化运维的完整方案
java·jvm