我有一个使用SFTP接收zip文件的要求。我们应该将文件原样存档,在解压缩压缩文件后也处理文件。下面是主流和子流的代码。agentDataArchiveChannelAdapter()工作正常,但是对于另一个通道,我得到的是错误。错误可能是什么?如何修复?我的假设是,surancebayAgentDemographicFlow()将把记录放入直接通道中,它将遵循所述的过程。
Dispatcher has no subscribers, failedMessage=GenericMessage [payload=C:\thirdparty\input\thirdpartyAL_20180921_215000.zip, headers={file_originalFile=C:\thirdparty\input\thirdpartyAL_20180921_215000.zip, id=1a721c73-92fe-cabc-c8a3-cb71c72ab07d, file_name=thirdpartyAL_20180921_215000.zip, file_relativePath=thirdpartyAL_20180921_215000.zip, timestamp=1537816555968}]
2018-09-24 12:16:22.004 DEBUG 17536 --- [ask-scheduler-2] o.s.i.channel.PublishSubscribeChannel : postSend (sent=true) on channel 'errorChannel', message: ErrorMessage [payload=org.springframework.messaging.MessageDeliveryException: Dispatcher has no subscribers for channel 'application.thirdpartyAgentDemographicFlow-Processing'.; nested exception is org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers, failedMessage=GenericMessage [payload=C:\thirdparty\input\thirdpartyAL_20180921_215000.zip, headers={file_originalFile=C:\thirdparty\input\thirdpartyAL_20180921_215000.zip, id=1a721c73-92fe-cabc-c8a3-cb71c72ab07d, file_name=thirdpartyAL_20180921_215000.zip, file_relativePath=thirdpartyAL_20180921_215000.zip, timestamp=1537816555968}], failedMessage=GenericMessage [payload=C:\thirdparty\input\thirdpartyAL_20180921_215000.zip, headers={file_originalFile=C:\thirdparty\input\thirdpartyAL_20180921_215000.zip, id=1a721c73-92fe-cabc-c8a3-cb71c72ab07d, file_name=thirdpartyAL_20180921_215000.zip, file_relativePath=thirdpartyAL_20180921_215000.zip, timestamp=1537816555968}], headers={id=9e342354-8436-e1de-774e-937c8b6809d5, timestamp=1537816582001}] for original GenericMessage [payload=C:\thirdparty\input\thirdpartyAL_20180921_215000.zip, headers={file_originalFile=C:\thirdparty\input\thirdpartyAL_20180921_215000.zip, id=1a721c73-92fe-cabc-c8a3-cb71c72ab07d, file_name=thirdpartyAL_20180921_215000.zip, file_relativePath=thirdpartyAL_20180921_215000.zip, timestamp=1537816555968}]
代码/集成流程
@Bean("sftpAgentInboundFlow")
public IntegrationFlow sftpAgentInboundFlow(SessionFactory<LsEntry> sftpSessionFactory) {
return IntegrationFlows
.from(Sftp.inboundAdapter(sftpSessionFactory)
.deleteRemoteFiles(false)
.preserveTimestamp(true)
.remoteDirectory(agentRemoteDir)
.filter(new AcceptOnceFileListFilter<>())
.regexFilter(".*\\.zip$")
.localDirectory(new File(inputDir))
.autoCreateLocalDirectory(true)
.maxFetchSize(1)
,
consumer -> consumer.id("sftpInboundAdapter")
.autoStartup(false)
.poller(Pollers.fixedDelay(scanFrequency,TimeUnit.SECONDS)))
.publishSubscribeChannel(pubSub -> pubSub
.id("AgentInboundDemographic-PubSub-Channel")
.subscribe(flow -> flow.bridge(e -> e.id("ziparchiver")).handle(agentDataArchiveChannelAdapter()))
.subscribe(surancebayAgentDemographicFlow())
)
.get();
}
//@Bean("surancebayAgentDemographicFlow")
public IntegrationFlow surancebayAgentDemographicFlow() {
return IntegrationFlows
//.from(inputFileSource(), spec -> spec.poller(Pollers.fixedDelay(scanFrequency,TimeUnit.SECONDS)/*.maxMessagesPerPoll(corepoolsize)*/))
.from(MessageChannels.direct("thirdpartyAgentDemographicFlow-Processing"))
.transform(unZipTransformer())
.split(splitter())
.channel(MessageChannels.executor(taskExecutor()))
.<File, Boolean>route(f -> f.getName().contains("individual"), m -> m
.subFlowMapping(true, sf -> sf.gateway(individualProcessor()))
.subFlowMapping(false, sf -> sf.gateway(firmProcessor()))
)
.aggregate(aggregator -> aggregator.groupTimeout(messageGroupWaiting).correlationStrategy(new CorrelationStrategy() {
@Override
public Object getCorrelationKey(Message<?> message) {
return "processdate";
}
}).sendPartialResultOnExpiry(true))
.handle("agentDemograpicOutput","generateAgentDemographicFile")
.channel(confirmChannel())
.get()
;
}
好啦!我认为使用Spring Integration版本的问题是,在该版本中使用外部IntegrationFlow
作为子流的特性尚未实现。或者考虑升级到最新版本,或者将解决方案用作.subscribe(“ThirdPartyAgentDemographicFlow-Processing”)
并取消对SuranceBayAgentDemographicFlow
定义的@bean
注释的注释。
我正在尝试使用spring-integration-kafka-2.1.0。在我公司的项目中发布。但是,由于下面列出的例外情况,它不起作用:org。springframework。信息。MessageDeliveryException:Dispatcher没有频道“org”的订户。springframework。网状物上下文WebApplicationContext:/order。“奥Kafka”
在我的帐户页面/视图订阅中,在操作段落中,我有一个取消按钮,但没有挂起按钮。你知道这是否正常吗? 我跟踪了这个函数,它只返回取消数据:wcs_get_all_user_actions_for_subscription 谢谢你的帮助
我正试图按价格对产品集合进行排序,但当我添加(粗体)时,这些产品消失了 我想把它们分类,虽然没有存货,但有人知道我能做到吗?
您可以帮助进行spring集成配置吗。 收到消息后,我收到: 我的代码: 我有类似的JmsInboudGateway配置,用于其他没有.requestChannel和.replyChannel的队列。 如果不是注入请求通道bean,而是用文本名称声明它,得到了这个 以及更多的文字宣传问题。
我正在使用条纹结账来处理结账表单。 我在前面做了一个“取消订阅”按钮(使用react.js),我正在发送api调用以按ID取消订阅。 已成功取消订阅,但未将款项退还给客户? 例如: 我今天(每月)订阅了,明天我想取消订阅? 29天或30天的钱应该退给我,对吧? 节点JS代码: 我在Stripe仪表板上看到,当我删除订阅时,货币值没有改变。 多谢了。
我想使用PublishSubject创建一个广播系统,一个后台任务将轮询一些endpoint,并定期使用该主题广播结果。我希望在第一个订阅者订阅主题时开始轮询,并在没有更多订阅者时停止轮询。如果有新订阅者订阅,则应继续轮询。