首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >骡子4缓存范围。如何在一定条件下停止骡子缓存

骡子4缓存范围。如何在一定条件下停止骡子缓存
EN

Stack Overflow用户
提问于 2020-11-20 13:32:54
回答 1查看 446关注 0票数 0

我想在我的骡子应用程序中使用缓存。流程非常简单,我在电子邮件的基础上查询DB,只有当它返回一些行时,我才想存储结果。我提到了这个问题Mule Cache作用域--如何在DB输出无有效负载的情况下使mule缓存失效,但是这个解决方案只适用于mule 3,因为Mule 4使用可重复流

我尝试实现以下解决方法:

  1. 将缓存作用域包装在尝试作用域中。
  2. 当我不想存储缓存时引发错误。
  3. 错误继续错误只针对错误类型

它正确地执行流,不将结果存储在缓存中,也给出了成功的响应,但它抛出了一个错误(可能是在某个异步进程中),我在日志中看到了这一点。

代码语言:javascript
复制
    ERROR 2020-11-20 17:54:36,923 [[MuleRuntime].uber.03: cachingStrategy_null @302bcf75] [processor: testFlow1/processors/1/processors/0/processors/1; event: 594def80-2b2b-11eb-a1d0-a0d37a4d6fab] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
    ********************************************************************************
    Message               : The mapper returned a null value.
    Element               : testFlow1/processors/1/processors/0 @ test:test.xml:131 (Cache)
    Element DSL           : <ee:cache doc:name="Cache" doc:id="8c09cdc7-4fc9-4de1-a961-f74323f6ea7b" cachingStrategy-ref="Caching_Strategy">
                            <logger level="INFO" doc:name="Copy_of_Logger" doc:id="c539273d-7da2-4a20-bbdc-11f9fd4424cc" message="inside cache scope."></logger>
                            <ee:transform doc:name="Transform Message" doc:id="be16423b-c018-4949-b441-e81c6abc65ef">
                            <ee:message>
                            <ee:set-payload>%dw 2.0
    output application/json
    ---
    if(payload.store) {
        id: payload.id,
        time: now()
    }
    else {}</ee:set-payload>
                            </ee:message>
                            <ee:variables>
                            <ee:set-variable variableName="cacheEntry">%dw 2.0
    output application/java
...
Root Exception stack trace:
java.lang.NullPointerException: The mapper returned a null value.
    at java.util.Objects.requireNonNull(Objects.java:228)
    at reactor.core.* (4 elements filtered from stack; set debug level logging or '-Dmule.verbose.exceptions=true' for everything)(Unknown Source)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.mule.service.scheduler.internal.AbstractRunnableFutureDecorator.doRun(AbstractRunnableFutureDecorator.java:111)
    at org.mule.service.scheduler.internal.RunnableFutureDecorator.run(RunnableFutureDecorator.java:54)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

我也在附上一段我的流程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 13:54:32

您可以使用失效键操作在将键添加到缓存后删除它。

它应该在缓存作用域之后添加。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64930366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档