我正在尝试使用Spring Integration创建持久事件队列。在第一个版本中,我想使用JPA(使用MySQL数据库),并且将来很有可能迁移到JMS版本(我希望转换尽可能简单)。
我做了一个示例版本(没有坚持使用JPA),它做了类似于我需要的东西:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/beans">
<int:channel id="customerEventChannel">
<int:queue/>
</int:channel>
<bean id="customerEventService" class="springintegration.CustomerEventService"/>
<int:outbound-channel-adapter ref="customerEventService" method="handleCustomerEvent" channel="customerEventChannel">
<int:poller fixed-delay="3000" max-messages-per-poll="1" />
</int:outbound-channel-adapter>
</beans>
但是当我尝试修改示例以使用JPA入站和出站通道适配器时,我无法使其工作。
我的想法是每5秒读取一次数据库(可配置),然后处理从数据库中恢复的“队列”中的元素。另一方面,我想在数据库中插入新元素,在服务类中调用方法。为此,我尝试了:
<int:channel id="customerEventInputChannel" />
<int:channel id="customerEventOutputChannel" />
<int-jpa:inbound-channel-adapter channel="customerEventInputChannel"
entity-class="springintegration.CustomerEvent"
entity-manager-factory="entityManagerFactory"
auto-startup="true"
expect-single-result="true"
delete-after-poll="true">
<int:poller fixed-rate="5000">
<int:transactional propagation="REQUIRED" transaction-manager="transactionManager"/>
</int:poller>
</int-jpa:inbound-channel-adapter>
<int-jpa:outbound-channel-adapter channel="customerEventOutputChannel"
entity-class="springintegration.CustomerEvent"
entity-manager-factory="entityManagerFactory">
<int-jpa:transactional transaction-manager="transactionManager" />
</int-jpa:outbound-channel-adapter>
但我遗漏了一些东西,因为我无法读取或写入数据库。我也尝试使用service-activator,bridge,gateway等,结果相同。
任何帮助都将不胜感激。
答案 0 :(得分:0)
我最近发现queueChannels可以通过Jdbc保持持久性。
请参阅http://docs.spring.io/spring-integration/reference/html/jdbc.html章备用消息频道