<bean id="sessionQueuePersistance"
class="com.emph.SessionQueuePersistance">
<constructor-arg name="sessionInboundChannel" ref="sessionInboundChannel" />
</bean>
<int:channel id="sessionInboundChannel">
<int:queue message-store="sessionStore" />
<int:interceptors>
<int:ref bean="messageListener"/>
</int:interceptors>
</int:channel>
<bean id="messageListener" class="com.emph.MessageListener" />
<!-- int:logging-channel-adapter id="logger" log-full-message="true" level="INFO" /-->
<bean id="sessionStore"
class="org.springframework.integration.jdbc.store.JdbcChannelMessageStore">
<property name="dataSource" ref="queueDataSource" />
<property name="channelMessageStoreQueryProvider" ref="queryProvider" />
<property name="tablePrefix" value="QUEUE_" />
</bean>
<bean id="queryProvider"
class="org.springframework.integration.jdbc.store.channel.OracleChannelMessageStoreQueryProvider" />
<bean id="queueDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
<property name="username" value="test" />
<property name="password" value="test" />
</bean>
<!-- the bridge polls the persisted messages and forwards them to the output
channel -->
<int:bridge input-channel="sessionInboundChannel"
output-channel="sessionOutboundChannel">
<int:poller fixed-rate="1000" max-messages-per-poll="-1">
<int:transactional transaction-manager="txManager" />
</int:poller>
</int:bridge>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="queueDataSource"/>
</bean>
<int:channel id="sessionOutboundChannel">
<int:dispatcher task-executor="taskExecutor" />
</int:channel>
<bean id="sessionQueueReader" class="com.emph.SessionReader" />
<int:service-activator input-channel="sessionOutboundChannel"
ref="sessionQueueReader" method="handleMessage" />
<bean id="taskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="4" />
<property name="maxPoolSize" value="4" />
</bean>
Spring Integration channel中使用message-store的例子
最新推荐文章于 2023-10-17 22:16:10 发布