Spring Integration Aggregator + JDBC Message Store 性能
Posted
技术标签:
【中文标题】Spring Integration Aggregator + JDBC Message Store 性能【英文标题】:Spring Integration Aggregator + JDBC Message Store performance 【发布时间】:2016-04-04 06:40:11 【问题描述】:聚合器处理 JMS 消息以及持久性消息存储的性能非常低。就像下面给出的一个简单示例一样,处理的消息在每秒 25-28 条消息之间。
这是正常行为吗?还是我在这里做错了什么?
<!-- ###################### 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 Integration?在这方面进行了许多改进,最新的是在 4.2 中。
当前版本是4.2.4;如果您仍然发现该版本存在问题,请告诉我们。
【讨论】:
以上是关于Spring Integration Aggregator + JDBC Message Store 性能的主要内容,如果未能解决你的问题,请参考以下文章
INTEGRATION TESTING WITH SPRING AND JUNIT
Spring Integration Dispatcher 没有频道订阅者
使用 Spring Integration HttpInbound 示例
spring-integration-file 的 junit 测试用例