2015-12-30 103 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;讓我們知道你是否仍然看到該版本的問題。