below is an example of how to do this type of consumption with Spring Integration using the Message Driven Channel Adapter and the Jdbc Outbound Adapter. a couple of key things that will affect your performance and through put are the following;
- transactions - if it's going across the queue to the database that'll add some overhead
- transformation - how much processing goes into converting the message mapping to the table
here's the Spring Integration example;
<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>
and here's the sample message
MSFT,100.00,1373761697932
it's very rough, but could be a starting point. the performance on simple unit test was about an average of 200 messages per second but that's a bit hardware dependent.