我使用的是spring集成聚合器和messagegroupstorereaper,但不知怎么的,错误并没有到达全局errorchannel。
<int:aggregator id="agg"
ref="MyMsgsAggregator"
input-channel="myAggInputChannel"
output-channel="processInputChannel"
discard-channel="errorChannel"
method="aggMessages"
message-store="messageGroupStore"
send-partial-result-on-expiry="true"
expire-groups-upon-completion="true" />
<bean id="messageGroupStore" class="org.springframework.integration.store.SimpleMessageStore" />
<task:scheduled-tasks>
<task:scheduled ref="multipartAggregatorReaper" method="run" fixed-rate="5000" />
</task:scheduled-tasks>
如果在“processinputchannel”之后出现任何异常(例如到期时的部分结果),则异常不会到达全局“errorchannel”。
甚至我尝试用poller将任务调度作业替换为入站通道适配器(正如@gary所建议的),但仍然没有成功:
<int:inbound-channel-adapter channel="reaperChannel" ref="MyMsgsAggregator" method="triggerReaper">
<int:poller error-channel="**errorChannel**" fixed-rate="5000">
</int:poller>
</int:inbound-channel-adapter>
请建议
谢谢
1条答案
按热度按时间z8dt9xmd1#
你的问题是:
send-partial-result-on-expiry="true"
. 这一选择确实是相互排斥的discard-channel
:所以,这并不奇怪,你的消息后,收获到的网站
processInputChannel
,不是errorChannel
.此外,还有
discardChannel
不是关于错误。当我们收获和收获时丢弃时,不会抛出异常ErrorMessage
不是从那里送来的。收割组的每一条消息都作为常规消息发送到该组discardChannel
.