下面是如何使用消息驱动通道适配器和 Jdbc 出站适配器使用 Spring Integration 进行此类消费的示例。以下是一些会影响您的表现和吞吐量的关键因素;
- 事务 - 如果它通过队列进入数据库,这将增加一些开销
- 转换 - 将消息映射转换为表需要多少处理
这是 Spring 集成示例;
<int-jms:message-driven-channel-adapter channel="trade.input.channel"
concurrent-consumers="1" connection-factory="connectionFactory"
destination="issue.queue"/>
<int:channel id="trade.input.channel"/>
<int-jdbc:outbound-channel-adapter
channel="trade.input.channel"
data-source="dataSource" query="insert into target_table (issue_code,issue_price,transaction_timestamp) values (:issue_code,:issue_price,:issue_timestamp)"
sql-parameter-source-factory="spelFactory"/>
<bean id="spelFactory" class="org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory">
<property name="parameterExpressions">
<map>
<entry key="issue_code" value="payload.toString().split(',')[0]"/>
<entry key="issue_price" value="payload.toString().split(',')[1]"/>
<entry key="issue_timestamp" value="payload.toString().split(',')[2]"/>
</map>
</property>
</bean>
这是示例消息
MSFT,100.00,1373761697932
它非常粗糙,但可能是一个起点。简单单元测试的性能平均每秒大约 200 条消息,但这有点依赖于硬件。