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("删除死信队列失败!");
    }
}
相关推荐
mqiqe2 分钟前
线程调度与 Schedulers:Project Reactor 并发模型的核心引擎
java·开发语言·网络
我命由我1234512 分钟前
Android 开发问题:unexpected element <service> found in <manifest>
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
正在走向自律34 分钟前
飞算JavaAI能搞定充电站故障处置吗?
java·ai编程·java开发·飞算javaai·java代码生成·ai coding模型·springboo
用户409666013175138 分钟前
Guava 不止有 Lists 和 Maps:Cache、EventBus、Multimap 实战
java·后端
一只叫煤球的猫1 小时前
从 Java 21 到 Java 25:ThreadLocal 以外的选择—— ScopedValue
java·后端·架构
用户3169353811832 小时前
SpringBoot + Vue 项目生产环境部署完整指南
前端·后端
步行cgn2 小时前
MyBatis 多对一关联映射详解
java
仍然.2 小时前
SpringCloud---Eureka介绍
java·spring cloud·eureka
霸道流氓气质2 小时前
Spring 事务同步机制 —— AfterTransactionActionCollector 的异步解耦原理
java·后端·spring