【问题标题】:How to handle code when memchache is not working(simple-spring-memcached)memchache 不工作时如何处理代码(simple-spring-memcached)
【发布时间】:2014-04-15 03:36:05
【问题描述】:

感谢“simple-spring-memcached”中的“入门指南”,我设法使用指南中的“Spring 3.1”示例让 memcached 在我的项目中工作,我使用“spymemcached”作为提供者。当 memcached 服务器启动并运行时,一切正常。 但是,当无法访问 memcache 服务器(故意关闭以进行测试)时,下划线代码不起作用,应用程序不会执行,只是抛出运行时异常,说明无法连接到 memcache 服务器并发生超时。

Caused by: net.spy.memcached.internal.CheckedOperationTimeoutException: Timed out waiting

但是,在这种情况下,我期望每次都执行目标方法,因为缓存无法访问,而不是完全阻塞执行路径。这可以使用简单的spring memcache吗? , 有没有人有这方面的经验?我该如何解决这种情况,缓存层的任何异常都不需要干扰执行,只需调用目标方法作为后备。这就是我想要实现的目标。

我用“fallbackToNoOpCache”尝试了spring“CompositeCacheManager”,但看起来simple-spring-memcached对此没有影响。

我的所有配置都与(spring 3.1)完全相似

https://code.google.com/p/simple-spring-memcached/wiki/Getting_Started

感谢您的帮助

例如:我的@Cacheable 的用法是

@Cacheable(value="books", key="#isbn")
public Book findBook(ISBN isbn, boolean checkWarehouse, boolean includeUsed)

【问题讨论】:

    标签: java memcached spymemcached spring-cache simple-spring-memcached


    【解决方案1】:

    你是对的,它应该像你描述的那样工作,我确信在 SSM 注释的情况下(@ReadThrough*、@Update*、@Invalidate*) 它以这种方式工作。我看到 Spring Cache 注释的行为是不同的。我今天会尝试修复它。 如果您不介意,请在github SSM page 上为这个错误创建一个问题。

    【讨论】:

    • 感谢 ragnor,感谢您的快速响应,出色的工作,感谢您的帮助。根据您的要求,我在上面的页面中创建了错误
    • 我还发现如果我使用 'xmemcached' 它会按预期工作。
    • 太棒了,我会试试这个,让你知道。感谢并感谢您的快速响应!
    • 类似地,使用 AWS 实现 (com.google.code.ssm.providers.elasticache.MemcacheClientFactoryImpl) 如果无法访问 memcached 集群,则会引发 java.nio.channels.UnresolvedAddressException 错误。我希望调用底层方法,并且可能只记录一个警告。这不是它应该如何工作的吗?如果没有,如果缓存服务器不可用,有没有一种优雅的失败方法?
    • 不是Spring记录的吗?缓存由实现 FactoryBean. 的 CacheFactory.getObject 创建
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2019-04-23
    • 2012-06-17
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多