如何在spring集成中找到事务结束点?
好的,我添加了SpringXML配置,以便对我的情况进行更多解释 首先,我聚合了7个通道 其次,聚合器释放声明为发布通道的聚合通道。 第三,每7个订阅频道选择室内数据库制作每条消息。 第四,每个通道使用jdbc出站通道适配器将数据插入外部数据库 下面我附上了每一个与xml配置相关的。。谢谢如何在spring集成中找到事务结束点?,spring,spring-integration,spring-transactions,Spring,Spring Integration,Spring Transactions,好的,我添加了SpringXML配置,以便对我的情况进行更多解释 首先,我聚合了7个通道 其次,聚合器释放声明为发布通道的聚合通道。 第三,每7个订阅频道选择室内数据库制作每条消息。 第四,每个通道使用jdbc出站通道适配器将数据插入外部数据库 下面我附上了每一个与xml配置相关的。。谢谢 <int:bridge input-channel="request-write-to-openPMSQueueChannel" output-channel="writetoOpenP
<int:bridge input-channel="request-write-to-openPMSQueueChannel"
output-channel="writetoOpenPMSChannel">
<int:poller fixed-rate="5000" max-messages-per-poll="-1">
<int:transactional propagation="REQUIRED"
transaction-manager="transactionExternalDatabaseManager" />
</int:poller>
</int:bridge>
但问题是,我必须在7个插入作业成功完成后立即触发一些事件。
如何获得触发某些post事件的7个insert事务完成点?抱歉,信息不足。我们需要查看上游配置 如果您所有的
INSERT
s都在同一个发送中,则您可以在业务结束逻辑中添加一个或多个订户
如果所有的事情都是在TX的同一个线程中完成的,那么TX将不会完成,除非您不执行最终通知
另一方面,如果它们都在不同的事务中,那么当每个项目向另一个表中添加一些信息以确认它完成了原始工作时,您需要类似于收据的内容。是的,它可以在同一个TX
要确定所有所需的项目都完成了工作,您需要以较短的时间间隔对具有特定业务键的新表进行轮询
从另一个角度看,您的所有任务都可以向公共发送相同的消息,正如您所说,我添加了上游配置。请帮帮我。感谢您的关注:)根据您的配置更新了asnwer。感谢您的详细回复。但是,仍然,我不知道我可以把post事件代码放在哪里。你能给出一些更详细的解释吗?我试着将jdbc出站适配器更改为jdbc门方式以使用应答通道。所以,我想我会聚合7个回复频道,然后我会呼叫post事件。但问题是。。jdbc门方式在插入行时多次调用。您已经有几个
。在配置的末尾再添加一个有什么问题?只有在所有适配器完成插入之后,这个适配器才会接受请求消息。
<int:chain input-channel="writetoOpenPMSChannel"
output-channel="writetoOpenPMS007Channel">
<int:service-activator method="exectue007">
<bean id=""
class="com.sds.redca.core.module.analyzer.convert.ModelingConvertSVC">
</bean>
</int:service-activator>
<int:splitter ref="fromListToRowSplitter" />
</int:chain>
<int:chain input-channel="writetoOpenPMSChannel"
output-channel="writetoOpenPMS006Channel">
<int:service-activator method="exectue006">
<bean id=""
class="com.sds.redca.core.module.analyzer.convert.ModelingConvertSVC">
</bean>
</int:service-activator>
<int:splitter ref="fromListToRowSplitter" />
</int:chain>
<int-jdbc:outbound-channel-adapter channel="writetoOpenPMS001Channel"
query="INSERT INTO IF_RSRC
(PJT_ID, DT_INPUT, RSRC_ID, RSRC_TYPE_ID, RSRC_DETAILTYPE_ID, RSRC_NM, CNFG_PJT_NM, RSRC_PATH_NM, LST_RGSTR_ID, LST_RGST_DTM, FINAL_RVSN_NO, YN_USE)
VALUES
(:payload[PJT_ID], :headers[timeStamp], :payload[RSRC_ID], :payload[RSRC_TYPE_ID], :payload[RSRC_DETAILTYPE_ID], :payload[RSRC_NM], :payload[CNFG_PJT_NM],
:payload[RSRC_PATH_NM], :payload[LST_RGSTR_ID], :payload[LST_RGST_DTM], :payload[FINAL_RVSN_NO], :payload[YN_USE])"
data-source="outboundDataSource" />
<int-jdbc:outbound-channel-adapter channel="writetoOpenPMS002Channel"
query="INSERT INTO IF_RSRC_RELATION
(PJT_ID, DT_INPUT, MAIN_RSRC_ID, SUB_RSRC_ID, RELATION_TYPE_CODE_ID)
VALUES
(:payload[PJT_ID], :headers[timeStamp], :payload[MAIN_RSRC_ID], :payload[SUB_RSRC_ID], :payload[RELATION_TYPE_CODE_ID])"
data-source="outboundDataSource" />