如何从 Mule 获取缓存事件键

How to get the Cache Event Key from Mule

我正在使用 Anypoint Studio 6.1 和 Mule 3.8.1,并且有一个使用默认事件密钥生成的 mule 管理的存储缓存策略。

如何在流中获取此键的值?它存储在哪里?

谢谢

默认情况下,如果您没有在缓存中提供密钥生成器表达式,生成器会提供 SHA 256 hash 作为密钥。
参考:- https://github.com/mulesoft/mule/blob/mule-3.x/core/src/main/java/org/mule/keygenerator/SHA256MuleEventKeyGenerator.java
此生成器计算 当前消息 字节负载的 SHA 256 hash

您可以使用以下示例获取流的缓存键列表:-

<ee:object-store-caching-strategy name="cachingStrategy" doc:name="cachingStrategy">
   <managed-store storeName="myNonPersistentManagedObjectStore" maxEntries="-1" entryTTL="20000" expirationInterval="5000"/>
</ee:object-store-caching-strategy>

<flow name="keylist" doc:name="keylist">
         <http:listener config-ref="HTTP_Listener_Configuration" path="/getkeyvalue" doc:name="HTTP"/>
            <scripting:component doc:name="Initialise Database"> 
            <scripting:script engine="Groovy">
                <scripting:text><![CDATA[
             def keyValues = [];
              for(a=0;a<muleContext.getRegistry().lookupObject("cachingStrategy").getStore().allKeys().size();a++)
               {
                     keyValues = muleContext.getRegistry().lookupObject("cachingStrategy").getStore().allKeys().get(a);

                }

                if(keyValues.isEmpty())
                {
                 return "Key is either null or expired !!!";
                }
                else
                {
                 return "KeysList " + muleContext.getRegistry().lookupObject("cachingStrategy").getStore().allKeys().toString();
                }           

               ]]></scripting:text>

            </scripting:script>  
        </scripting:component>
       </flow>

每当您将一些消息放入缓存中时,使用上述流程,您可以获得缓存范围提供的 默认缓存键值 的所有列表 SHA 256 hash 默认