2015-12-30 84 views
1

聚合器与持久性消​​息存储库一起处理JMS消息的性能非常低。就像下面给出的简单示例一样,处理的消息在每秒25到28个消息之间。Spring集成聚合器+ JDBC消息存储库性能

这是正常的行为?或者我在这里做错了什么?

<!-- ###################### Inbound Message Adapter ####################### --> 
<int-jms:message-driven-channel-adapter 
    id="xmlInboundMessageAdapter" 
    channel="msgUnmarshallingChannel" 
    connection-factory="jmsConnectionFactory" 
    destination="messsageQueue" 
    acknowledge="transacted" 
    concurrent-consumers="1" 
    max-concurrent-consumers="5" 
    auto-startup="true"/> 

<!-- ###################### MSG UN-MARSHALLER ####################### --> 
<int:channel id="msgUnmarshallingChannel" /> 
<int:chain input-channel="msgUnmarshallingChannel" output-channel="msgHeaderEnricherChannel"> 
    <int-xml:unmarshalling-transformer unmarshaller="msgUnmarshaller" /> 
</int:chain> 

<bean id="msgUnmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
    <property name="contextPath" value="com.msg.something" /> 
    <property name="supportJaxbElementClass" value="true" /> 
</bean> 

<int:channel id="msgHeaderEnricherChannel" /> 

<!-- ###################### SOME HEADER ENRICHMENT ####################### --> 
<int:chain input-channel="msgHeaderEnricherChannel" output-channel="msgAggreggatorChannel"> 
    <int:header-enricher> 
     <int:header name="CORRELATION_ID" expression="payload.notificationTypeId" /> 
    </int:header-enricher> 
</int:chain> 

<int:channel id="msgAggreggatorChannel" /> 
<int:channel id="msgAggreggatorDiscardChannel" /> 

<!-- ###################### AGGREGATOR WITH PERSISTENCE MSG STORE ####################### --> 
<int:aggregator 
    auto-startup="true" 
    send-timeout="-1" 
    message-store="messageStore" 
    input-channel="msgAggreggatorChannel" 
    output-channel="nullChannel" 
    discard-channel="msgAggreggatorDiscardChannel" 
    correlation-strategy="msgCorrelationStrategy" 
    release-strategy="msgReleaseStrategy" 
    expire-groups-upon-completion="true" /> 

<!-- ###################### MSG STORE ####################### --> 
<bean id="messageStore" class="org.springframework.integration.jdbc.JdbcMessageStore"> 
    <property name="dataSource" ref="dataSourceSPJDBC" /> 
    <property name="lobHandler" ref="oracleLobHandler" /> 
</bean> 

<bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" /> 

<bean id="msgCorrelationStrategy" class="org.springframework.integration.aggregator.HeaderAttributeCorrelationStrategy"> 
    <constructor-arg value="CORRELATION_ID" /> 
</bean> 

<bean id="msgReleaseStrategy" class="org.springframework.integration.aggregator.MessageCountReleaseStrategy"> 
    <constructor-arg value="10"/> 
</bean> 

回答

1

对于非常大的群体来说,这是已知的问题。

您正在使用哪个版本的Spring集成?这方面已经有了一些改进,最新的是4.2。

当前版本是4.2.4;让我们知道你是否仍然看到该版本的问题。