在更新缓存时发出新值的发布服务器



是否有一种方法来包装缓存并创建一个将发出新值的发布者?

我有一个数据管道(由Kafka Streams提供),并要求通过GraphQL订阅来提供结果。为了避免不得不处理~10k的临时消费者,我想预加载缓存。基本上,我需要一个Publisher或kotlin协程Flow来包装缓存,侦听更新事件并发出一个新值。

简短的回答,不直接使用Spring的缓存抽象(API或注解)。

在应用层,你需要编写一个AOP Aspect封装在缓存更新后通过发布者发出事件的功能,然后将事件发出(Spring) AOP Aspect/Advice与缓存通知结合并排序,通过Spring的缓存抽象应用于(例如)@Cacheable注释的应用程序服务方法。如果您希望将此关注点与应用程序逻辑保持一致,则可以这样做,这可能更具可重用性。

然而,另一种可能更简单的方法(取决于您的缓存提供程序)是简单地实现由缓存提供程序本身提供的回调接口,如果确实存在这样的回调。 例如,Apache Geode可以在Spring的缓存抽象中充当缓存提供者(&框架),你可以实现一个特定于应用程序的Apache GeodeCacheListener与你想要的行为取决于类型的缓存更新(例如创建,更新,销毁,无效(通常由到期触发),等等)。但是,该接口依赖于缓存提供程序。但是,另一方面,这将更加可靠,因为缓存肯定会因为@Cacheable

应用程序服务方法触发的缓存操作而改变,例如。 无论如何,我希望这能给你一些想法。里程变化。干杯!

最新更新