Мул — разделение подпотоков в их собственные файлы потоков

#mule

#mule

Вопрос:

У нас есть поток Mule, который состоит из нескольких подпотоков — чтобы лучше управлять этим, мы хотели бы скопировать подпотоки в их собственные отдельные файлы. Во время выполнения я получаю следующую ошибку, которую я пытаюсь выяснить.

 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ParentFlow': Cannot create inner bean '(inner bean)' of type [org.mule.config.spring.factories.ScatterGatherRouterFactoryBean] while setting bean property 'messageProcessors' with key [1]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Cannot create inner bean '(inner bean)' of type [org.mule.config.spring.factories.FlowRefFactoryBean] while setting bean property 'messageProcessors' with key [1]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Invocation of init method failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'childflow' is defined
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:282)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:126)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:154)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1391)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1132)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.mule.config.spring.SpringRegistry.doInitialise(SpringRegistry.java:86)
at org.mule.registry.AbstractRegistry.initialise(AbstractRegistry.java:105)
... 20 more
  

Это конфигурация:

 <flow name="ParentFlow" doc:name="ParentFlow">
    <flow-ref name="childFlow" doc:name="childFlow" />
</flow>
<sub-flow name="childflow" doc:name="childflow">
</sub-flow>
  

Ответ №1:

Из предоставленной вами конфигурации видно, что имя дочернего потока написано неправильно (регистр).

Имя подпотока — «childflow», тогда как имя, на которое ссылаются, — «childFlow»

Используйте правильное имя «childflow» в ссылке на поток, и это должно решить проблему.

Ответ №2:

Можете ли вы показать свой код? возможно, подпоток указан неправильно или указывает на неопределенный подпоток.

Комментарии:

1. <имя потока = «Родительский поток» doc:name=»Родительский поток»> <имя потока = «Дочерний поток» doc:name =»Дочерний поток» /> </flow> <имя подпотока =»дочерний поток» doc:name=»дочерний поток»> </sub-flow>

2. попробуйте определить вложенный поток перед определением потока

3. и поток ссылок внутри ParentFlow

4. Эта проблема решена — на самом деле то, что происходило, заключалось в том, что я пытался запустить JUnit и продолжал получать ошибки — я думал, что конфигурация потока была неправильной, но на самом деле, что должно в конечном итоге произойти, так это то, что getConfigResources должен иметь список потоков, разделенный запятыми.