2

我使用 SimpleMessageStore ( memory ) 作为 Aggregator 的默认存储,但由于我需要持久存储,我开始使用由 Mysql 5.5 支持的 jdbc 解决方案

但我真的很担心它的性能,因为使用 PerfTest(databene 的 contiperf),内存存储达到 6000 条消息/秒,而使用 mysql(或 redis,或 mongo),我不能达到超过 15-20消息/秒。

   <int:aggregator      id="XDRAggegator"
                        input-channel="mqChannel"
                        output-channel="publishChannel"
                        message-store="jdbc-messageStore"
   ....

    <bean id="reaper" class="org.springframework.integration.store.MessageGroupStoreReaper">
        <property name="messageGroupStore" ref="jdbc-messageStore"/>
        <property name="timeout"           value="${msg.timeout}"/>
   </bean>

<task:scheduler id="taskScheduler"/>

<task:scheduled-tasks scheduler="taskScheduler">    
    <task:scheduled ref="reaper" method="run" fixed-rate="${reaper.rate}"/>
</task:scheduled-tasks>


<task:executor id="taskExecutor" pool-size="1"/>
<task:annotation-driven executor="taskExecutor" scheduler="taskScheduler"/>

  <int-jdbc:message-store id="jdbc-messageStore" data-source="dataSource"  />

  <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" >
       <property name="driverClass" value="com.mysql.jdbc.Driver" />
       <property name="jdbcUrl" value="jdbc:mysql://${database.host}:3306/XDR?autoReconnect=true&amp;cachePrepStmts=true&amp;prepStmtCacheSize=50" />
       <property name="username" value="${database.username}"/>
       <property name="password" value="${database.password}"/>
       <property name="idleConnectionTestPeriodInMinutes" value="1"/>
       <property name="idleMaxAgeInMinutes" value="2"/>    
       <property name="connectionTimeoutInMs"   value="1000" />             
       <property name="maxConnectionsPerPartition" value="10"/>
       <property name="minConnectionsPerPartition" value="4"/>
       <property name="partitionCount" value="4"/>
       <property name="acquireIncrement" value="2"/>                              
       <property name="statementsCacheSize" value="10"/>
       <property name="closeConnectionWatch" value="false"/>
 </bean>

我错过了什么吗?我正在使用 spring-integration-jdbc 库中的默认模式。

4

0 回答 0