Я пытаюсь использовать Spring JdbcTemplate с SpringAs SimpleAsyncTaskExecutor, чтобы параллельные соединения с БД
может быть сделано, и все данные могут быть вставлены в связанную таблицу за меньшее время по сравнению с однопоточной средой.
Я использую следующий код, но он не ускоряет мое приложение.
Единственная подсказка, которую я смог найти, это то, что bean-компонент "aignProductDBWriter "создается только один раз, тогда как я ожидаю создания 10 отдельных экземпляров.
как я установил «предел дроссельной заслонки» на 10 в тасклете.
Что я делаю не так? Буду очень признателен за любую помощь или предложения.
С уважением,
<bean id="dataSourceProduct"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url.product}"
p:username="${jdbc.username.product}" p:password="${jdbc.password.product}"
/>
<bean id="jdbcTemplateProduct" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSourceProduct" />
</bean>
<bean id="simpleTaskExecutor" class="org.springframework.core.task.SimpleAsyncTaskExecutor" >
<property name="concurrencyLimit" value="-1" />
</bean>
<batch:job id="sampleJob" restartable="true" incrementer="dynamicJobParameters">
<batch:step id="mapMZList">
<batch:tasklet allow-start-if-complete="true" task-executor="simpleTaskExecutor" throttle-limit="10">
<batch:chunk reader="campaignProductItemReader" processor="campaignProductProcessor" writer="campaignProductDBWriter" commit-interval="5000"/>
</batch:tasklet>
</batch:step>
</batch:job>
<bean id="campaignProductDBWriter" class="com.falcon.cc.job.step.CampaignProductWriter">
<property name="jdbcTemplate" ref="jdbcTemplateProduct" />
</bean>
<bean id="campaignProductItemReader" class="com.falcon.cc.job.step.FlatFileSynchronizedItemReader" scope="step">
<property name="resource" value="file:#{jobParameters['input.TEST_FILE.path']}"/>
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="delimiter" value=";"/>
<property name="names" value="approvalStatus,validFrom,validTo"/>
</bean>
</property>
<property name="fieldSetMapper">
<bean class="com.falcon.cc.mapper.CampaignProductFieldSetMapper" />
</property>
</bean>
</property>
</bean>