当前位置: 首页 > 知识库问答 >
问题:

在 Mule 中使用 mysql 配置 EHCache

越风史
2023-03-14

在mule中,我将MySQL DB connector包装在一个缓存范围内,并配置了一个定制的缓存策略,即EHCache。

因此,每当对html" target="_blank">缓存作用域有重复请求时,它都应该返回存储在其缓存中的数据。但不是这样的。因此,我已经完成了这篇关于如何在Mule中使用CXF配置EHCache的文章

根据建议,我将代码分成两部分,并在缓存范围的请求和响应中使用VM和对象到字符串转换器

<spring:beans>
    <spring:bean id="cacheManager" name="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>
    <spring:bean id="cache" name="cache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
        <spring:property name="cacheManager" ref="cacheManager"/>
        <spring:property name="cacheName" value="dbCache"/>
        <spring:property name="maxElementsInMemory" value="10000"/>
        <spring:property name="eternal" value="false"/>
        <spring:property name="timeToIdle" value="120"/>
        <spring:property name="timeToLive" value="120"/>
        <spring:property name="overflowToDisk" value="true"/>
        <spring:property name="maxElementsOnDisk" value="10000000"/>
        <spring:property name="diskPersistent" value="false"/>
        <spring:property name="diskExpiryThreadIntervalSeconds" value="120"/>
        <spring:property name="memoryStoreEvictionPolicy" value="LRU"/>
    </spring:bean>
</spring:beans>

<ee:object-store-caching-strategy name="Caching_Strategy" doc:name="Caching Strategy">
    <custom-object-store class="com.lineage.cache.EhcacheObjectStore">
        <spring:property name="cache" ref="cache"/>
    </custom-object-store>
</ee:object-store-caching-strategy>

  <flow name="highjumpdummyFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
    <ee:cache doc:name="Cache" cachingStrategy-ref="Caching_Strategy">
        <logger message="#['Into the Cache Block']" level="INFO" doc:name="Logger"/>
        <vm:outbound-endpoint exchange-pattern="request-response" path="DBCache" connector-ref="VM" doc:name="VM">
            <vm:transaction action="ALWAYS_BEGIN"/>
        </vm:outbound-endpoint>
       </ee:cache>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>

  <flow name="highjump_dummyFlow1">
    <vm:inbound-endpoint exchange-pattern="one-way" path="DBCache" connector-ref="VM" doc:name="VM">
        <vm:transaction action="ALWAYS_BEGIN"/>
    </vm:inbound-endpoint>
    <db:select config-ref="MySQL_Configuration" doc:name="Database">
        <db:dynamic-query><![CDATA[select * from HIGHJUMP_INVOICE_CHARGE_STAGING;]]></db:dynamic-query>
    </db:select>
    <data-mapper:transform config-ref="Map_To_XML" doc:name="Map To XML"/>
    <byte-array-to-object-transformer doc:name="Byte Array to Object"/>
    <object-to-string-transformer doc:name="Object to String"/>
</flow>

但是现在,我遇到了一个新问题。在我的DB连接器的第二个流中,骡子流org.mule.api.MessagingException失败:无法将连接绑定到当前事务:org.mule.transport.vm.VMTransaction@90b65fe0-e408-11e4-ae24-d43d7e1497b8[status=STATUS_ACTIVE, key=null, Resources=null](org.mule.module.db.internal.domain.connection.ConnectionBindingException)。消息有效负载的类型是:字符串

控制台消息:Root Exception 堆栈跟踪:org.mule.transaction.IllegalTransactionStateException:只能在 org.mule.transport.vm.VMTransaction.bindResource(VMTransaction.java:41) 上绑定 “QueueManager/QueueSession” type resources at org.mule.module.db.internal.domain.connection.TransactionalDbConnectionFactory.getConnectionFromTransaction(TransactionalDbConnectionFactory.java:110) at org.mule.module.db.internal.domain.connection.TransactionalDbConnectionFactory.createConnection(TransactionalDbConnectionFactory.java:72) 3 more (为所有内容设置调试级别日志记录或 '-Dmule.verbose.exceptions=true' )

共有1个答案

夏侯承恩
2023-03-14

请删除VM中导致该问题的事务部分,并遵循此处给出的相同内容:-http://blogs . mulesoft . org/guest-post-exposure-cxf-web service-mule-cache/

而且说实话,你可以直接把数据库组件直接放在缓存作用域下,而不是把流分成2个。会有用的..

 类似资料:
  • 我使用Mule ESB来设计一个过程,通过这个过程可以向一个主题发布消息。订阅者将收听主题并接收消息。每个用户对消息的反应不同。这里的目标是能够从HTTP向主题发送测试消息,以测试订阅者。 下面是如何配置JMS连接: 这是流程: 当我运行测试时,我得到以下错误: 任何建议将不胜感激。 罗斯

  • 目前,这就是我如何捕捉异常并设置有效负载的方法 但是,CXF SOAP组件设置实际响应对象的有效负载。而我想在SOAP错误中发送一个错误对象。我怎么能那样做? 默认异常策略发送带有错误消息的SOAP错误。最初,我的目的只是添加记录器,让缺省错误消息在SOAP错误中运行。我添加了Catch exception策略,但后来发现它不会发送SOAP错误。然后我使用回滚策略发送SOAP错误。但是,使用Mul

  • 我们有一个使用Mule standalone 3.5的应用程序(我知道…)需要强制它使用TLS 1.1或1.2作为HTTPS。 我们已经升级到最新的Java 8(8u112)。我们已经修改了mule的tls默认值。包括以下内容: 我们的HTTPS GET请求结果出现异常: 没有合适的协议(协议被禁用或密码套件不合适)(javax.net.ssl.SSLHandshakeException) 有没有

  • 问题内容: 我的mysql数据库中的表名是动态生成的。有什么方法可以从名称与模式匹配的表中选择数据?我想它将看起来像: 问题答案: 不,您不能使用MySQL做到这一点。无法动态指定查询中的表-您必须在应用程序中构建列表(或执行多个单表查询)。

  • 问题内容: 是否有命令确定MySQL 5.0当前正在使用哪个配置文件? 问题答案: 如果您使用的是Linux,则使用来启动“ mysqld” ,例如。 在所有其他系统调用中,您会发现类似以下内容: 因此,如您所见,.it列出了它尝试使用并最终使用的.cnf文件。

  • 问题内容: 我试图在具有以下配置/版本的三个节点的dev Hadoop集群上安装和配置apache airflow: 然后我按照下面的命令集使用mysql配置它 在mysql之下完成以下操作 这是我文件中的一些详细信息 我在执行命令时遇到错误 已将.bashrc文件设置为: 这是我创建的目录: 当我查找该文件“ ”时,我发现了很多实例。 仅添加更多细节以防万一。 问题。我不太确定是否朝正确的方向前