Spring integration Spring集成-无法查找名为';55774d05-e054-4b71-bc7e-ecc53d029e75:20';在豆工厂

Spring integration Spring集成-无法查找名为';55774d05-e054-4b71-bc7e-ecc53d029e75:20';在豆工厂,spring-integration,Spring Integration,我有一个带有Spring集成的Spring boot项目。据我所知,它使用分散-聚集模式: @Bean public IntegrationFlow getClientsFlow() { return IntegrationFlows.from(FIND_CLIENTS_INPUT_CHANNEL_NAME) .transform(inputMessageConfigurer()) .scatterGather(

我有一个带有Spring集成的Spring boot项目。据我所知,它使用分散-聚集模式:

@Bean
public IntegrationFlow getClientsFlow() {
    return IntegrationFlows.from(FIND_CLIENTS_INPUT_CHANNEL_NAME)
            .transform(inputMessageConfigurer())
            .scatterGather(
                scatterer -> scatterer.applySequence(true)
                    .recipient(ONE_FLOW_CHANNEL_NAME)
                    .recipient(TWO_FLOW_CHANNEL_NAME),
                gatherer -> gatherer
                    .releaseStrategy(
                            new MessageCountReleaseStrategy(2))
                    .messageStore(new SimpleMessageStore()).outputProcessor(messageGroup -> {
                        List<TWOClient> twoClients = getMessagePayloadWithType(messageGroup,
                                TWO_MESSAGE_TYPE);
                        List<ONEClientAccount> oneClientAccounts = getMessagePayloadWithType(
                                messageGroup, ONE_MESSAGE_TYPE);
                        ClientAggregator aggregator = new ClientAggregator(twoClients,
                                oneClientAccounts);
                        return MessageBuilder.withPayload(aggregator.aggregateClients())
                                .copyHeaders(messageGroup.getOne().getHeaders()).build();
                    }))
            .get();
}
@Bean
公共集成流getClientsFlow(){
返回IntegrationFlows.from(查找\客户端\输入\通道\名称)
.transform(inputMessageConfigurer())
.漫无目的地收集(
scatter->scatter.applySequence(true)
.收件人(一个\u流\u通道\u名称)
.收件人(两个流量通道名称),
采集者->采集者
.释放策略(
新MessageCountReleaseStrategy(2))
.messageStore(新的SimpleMessageStore()).outputProcessor(messageGroup->{
列出两个客户端=getMessagePayloadWithType(messageGroup,
两种(信息类型);
List oneClientAccounts=getMessagePayloadWithType(
消息组,一个消息类型);
ClientAggregator聚合器=新的ClientAggregator(两个客户端,
oneClientAccounts);
返回MessageBuilder.withPayload(aggregator.aggregateClients())
.copyHeaders(messageGroup.getOne().getHeaders()).build();
}))
.get();
}
它工作正常,但有时日志中会出现错误:

[17.08.20 10:53:51:724 SAMT] 00000373 LoggingHandle I org.springframework.integration.handler.LoggingHandler handleMessageInternal GenericMessage [payload=<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:searchResult
...
</ns2:searchResult>
, headers={gatherResultChannel=55774d05-e054-4b71-bc7e-ecc53d029e75:20, sequenceDetails=[[0f92a717-b48b-bb4b-ee44-c1198b7301ed, 0, 0]], ... }]

[17.08.20 10:54:17:916 SAMT] 00000373 LoggingHandle E org.springframework.integration.handler.LoggingHandler handleMessageInternal [Request id: e13472c747b64e299f627ba541e6b367] - failed to look up MessageChannel with name '55774d05-e054-4b71-bc7e-ecc53d029e75:20' in the BeanFactory.; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '55774d05-e054-4b71-bc7e-ecc53d029e75:20' available
[17.08.20 10:54:17:916 SAMT] 00000373 SystemErr     R org.springframework.messaging.MessagingException: Failed to handle Message; nested exception is org.springframework.messaging.core.DestinationResolutionException: failed to look up MessageChannel with name '55774d05-e054-4b71-bc7e-ecc53d029e75:20' in the BeanFactory.; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '55774d05-e054-4b71-bc7e-ecc53d029e75:20' available, failedMessage=GenericMessage, headers={gatherResultChannel=55774d05-e054-4b71-bc7e-ecc53d029e75:20, .... }]
[17.08.20 10:54:17:918 SAMT] 00000373 SystemErr     R   at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:76)
[17.08.20 10:54:17:918 SAMT] 00000373 SystemErr     R   at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:64)
[17.08.20 10:54:17:918 SAMT] 00000373 SystemErr     R   at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:181)
[17.08.20 10:54:17:918 SAMT] 00000373 SystemErr     R   at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:160)
[17.08.20 10:54:17:918 SAMT] 00000373 SystemErr     R   at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:47)
[17.08.20 10:54:17:919 SAMT] 00000373 SystemErr     R   at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:108)
[17.08.20 10:54:17:919 SAMT] 00000373 SystemErr     R   at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput(AbstractMessageProducingHandler.java:426)
[17.08.20 10:54:17:919 SAMT] 00000373 SystemErr     R   at org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput(AbstractMessageProducingHandler.java:336)
[17.08.20 10:54:17:919 SAMT] 00000373 SystemErr     R   at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs(AbstractMessageProducingHandler.java:227)
[17.08.20 10:54:17:919 SAMT] 00000373 SystemErr     R   at org.springframework.integration.aggregator.AbstractCorrelatingMessageHandler.completeGroup(AbstractCorrelatingMessageHandler.java:747)
[17.08.20 10:54:17:919 SAMT] 00000373 SystemErr     R   at org.springframework.integration.aggregator.AbstractCorrelatingMessageHandler.handleMessageInternal(AbstractCorrelatingMessageHandler.java:439)
[17.08.20 10:54:17:920 SAMT] 00000373 SystemErr     R   at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:158)
[17.08.20 10:54:17:920 SAMT] 00000373 SystemErr     R   at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:70)
[17.08.20 10:54:17:920 SAMT] 00000373 SystemErr     R   at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:64)
[17.08.20 10:54:17:920 SAMT] 00000373 SystemErr     R   at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:181)
[17.08.20 10:54:17:920 SAMT] 00000373 SystemErr     R   at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:160)
[17.08.20 10:54:17:920 SAMT] 00000373 SystemErr     R   at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:47)
...
[17.08.20 10:54:17:972 SAMT] 00000373 SystemErr     R Caused by: org.springframework.messaging.core.DestinationResolutionException: failed to look up MessageChannel with name '55774d05-e054-4b71-bc7e-ecc53d029e75:20' in the BeanFactory.; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '55774d05-e054-4b71-bc7e-ecc53d029e75:20' available
[17.08.20 10:54:17:973 SAMT] 00000373 SystemErr     R   at org.springframework.integration.support.channel.BeanFactoryChannelResolver.resolveDestination(BeanFactoryChannelResolver.java:117)
[17.08.20 10:54:17:973 SAMT] 00000373 SystemErr     R   at org.springframework.integration.support.channel.BeanFactoryChannelResolver.resolveDestination(BeanFactoryChannelResolver.java:46)
[17.08.20 10:54:17:973 SAMT] 00000373 SystemErr     R   at org.springframework.messaging.core.AbstractDestinationResolvingMessagingTemplate.resolveDestination(AbstractDestinationResolvingMessagingTemplate.java:76)
[17.08.20 10:54:17:973 SAMT] 00000373 SystemErr     R   at org.springframework.messaging.core.AbstractDestinationResolvingMessagingTemplate.send(AbstractDestinationResolvingMessagingTemplate.java:69)
[17.08.20 10:54:17:973 SAMT] 00000373 SystemErr     R   at org.springframework.integration.scattergather.ScatterGatherHandler.lambda$doInit$0(ScatterGatherHandler.java:120)
[17.08.20 10:54:17:973 SAMT] 00000373 SystemErr     R   at org.springframework.integration.scattergather.ScatterGatherHandler$$Lambda$496/000000002B45D160.handleMessage(Unknown Source)
[17.08.20 10:54:17:973 SAMT] 00000373 SystemErr     R   at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:70)
[17.08.20 10:54:17:973 SAMT] 00000373 SystemErr     R   ... 277 more
[17.08.20 10:54:17:974 SAMT] 00000373 SystemErr     R Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '55774d05-e054-4b71-bc7e-ecc53d029e75:20' available
[17.08.20 10:54:18:002 SAMT] 00000373 SystemErr     R   at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:688)
[17.08.20 10:54:18:002 SAMT] 00000373 SystemErr     R   at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1218)
[17.08.20 10:54:18:003 SAMT] 00000373 SystemErr     R   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
[17.08.20 10:54:18:003 SAMT] 00000373 SystemErr     R   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
[17.08.20 10:54:18:003 SAMT] 00000373 SystemErr     R   at org.springframework.integration.support.channel.BeanFactoryChannelResolver.resolveDestination(BeanFactoryChannelResolver.java:89)
[17.08.20 10:54:18:003 SAMT] 00000373 SystemErr     R   ... 283 more
[17.08.20 10:53:51:724 SAMT]00000373 LoggingHandle I org.springframework.integration.handler.LoggingHandler HandleMessage内部通用消息[payload]=
55774d05-e054-4b71-bc7e-ecc53d029e75:20

这是来自
HeaderChannel注册表的UUID

if(消息通道的通道实例){ 字符串名称=this.uuid+id.incrementAndGet()

您的配置中似乎有一些标头enricher,其功能如下:

/**
 * Add header specifications to automatically convert header channels (reply, error
 * channels) to Strings and store them in a header channel registry. Allows
 * persistence and serialization of messages without losing these important framework
 * headers.
 * @param timeToLiveExpression the minimum time that the mapping will remain in the registry.
 * @return the header enricher spec.
 * @see org.springframework.integration.support.channel.HeaderChannelRegistry
 */
public HeaderEnricherSpec headerChannelsToString(String timeToLiveExpression) {
因此,您是对的:对于
replyChannel
头,从注册表中删除这些条目需要一个超时,这对于您的逻辑来说是不够的

尽管不清楚您是否仍然需要
headerChannelsToString()
选项


有关更多信息,请参阅文档:

尝试此增加时间的活动表达式

@Bean
  public IntegrationFlow verifyUtilityIntegrationFlow() {
    return IntegrationFlows.from(verifyUtilityHttpGateway())
      .enrichHeaders(h -> h.headerChannelsToString("200000"))
      .get();
  }