首页 > 解决方案 > 在 Java Lambda 中无法使用 Reddison 客户端(使用 samLocal 和 localstack)

问题描述

我不确定是什么导致这不起作用。每次代码在客户端初始化时,它都会停止工作在 Lambda 设置中使用 Redisson 不可行吗?

初始化redisson客户端的主要代码:

public boolean itemExistInCache(String item) {
    Config config = new Config();
    config.useSingleServer().setAddress("127.0.0.1:6379");

    // this one is not working
    RedissonClient redissonClient = Redisson.create(config);
}

设置

到目前为止我尝试过的工作

标签: javaaws-lambdaaws-samredissonlocalstack

解决方案


如果您打算在“真实” lambda(与 sam-local)中运行此代码,则需要在 VPC 中运行 lambda,在这种情况下,除非您在 VPC 中设置 NAT 或类似设备,否则它将没有外部网络。
如果在 sam-local 中您使用 127.0.0.1 - 您确定在 sam-local 中运行的“lambda”不在网络 cgroup 中(例如在 docker 中运行 - 如果在 docker 中,“localhost”可能不在 redis 的位置生活)?这个问题/问题几乎可以肯定是关于 sam-local 中的网络连接和端口映射的问题。您可以通过尝试其他方法来验证这一点,而不是 reddison 尝试连接到端点以查看它是否完全连接 - URL.openStream() 至少应该连接到足以给出错误。(redis 不是 HTTP,所以它不会“工作”,但它会连接和挂起——挂起几乎总是与 IP 或端口隔离有关)


推荐阅读