骡异步抛出handleWorkException
问题描述:
我想从内部交换模式请求响应的vm入站端点使用异步作用域。这个想法是从vmmainflow异步调用另外两个流。从我从mule文档中了解的情况来看,当vm与请求 - 响应交换模式一起使用时,exceution会在调用vm的同一个线程上进行。我现在需要从这个虚拟机流中调用另外两个流,它们是单向的,可以异步调用。但是,当我从我的mule-config执行以下操作时,出现如下所示的错误。这仅在对服务发出并发请求时发生。我不确定从vm调用异步的方法。如果这种方法是错误的,请告诉我如何去做这件事。我正在考虑使用另一个带入站的流作为vm(单向),它实际调用了两个流,然后从我的vmmainflow调用该新的vm。骡异步抛出handleWorkException
<flow name="vmmainflow">
<vm:inbound-endpoint address="vm://vmmainflow"
exchange-pattern="request-response" />
........
<async>
<flow-ref name="flow1" />
<flow-ref name="flow2" />
</async>
.....
</flow>
以下是我的错误:
Exception in thread "null.processor.async.2" org.mule.api.MuleRuntimeException: An exception occurred while invoking message processor "DefaultMessageProcessorChain '(inner iterating chain) of 'async' child chain'
[
[email protected],
[email protected],
[email protected]
]" for asynchronously.
org.mule.processor.AsyncInterceptingMessageProcessor handleWorkException] - Work caused exception on 'workCompleted'. Work being executed was: org.mule.processo[email protected]483ebe
at org.mule.processor.AsyncInterceptingMessageProcessor.handleWorkException(AsyncInterceptingMessageProcessor.java:197)
at org.mule.processor.AsyncInterceptingMessageProcessor.workCompleted(AsyncInterceptingMessageProcessor.java:173)
at org.mule.work.WorkerContext.run(WorkerContext.java:368)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.util.ConcurrentModificationException
at org.apache.commons.collections.map.AbstractHashedMap$HashIterator.nextEntry(AbstractHashedMap.java:1113)
at org.apache.commons.collections.map.AbstractHashedMap$KeySetIterator.next(AbstractHashedMap.java:938)
at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1010)
at org.mule.DefaultMuleMessage.copyMessageProperties(DefaultMuleMessage.java:228)
at org.mule.DefaultMuleMessage.<init>(DefaultMuleMessage.java:203)
at org.mule.DefaultMuleMessage.<init>(DefaultMuleMessage.java:279)
at org.mule.DefaultMuleMessage.newThreadCopy(DefaultMuleMessage.java:1375)
at org.mule.DefaultMuleEvent.newThreadCopy(DefaultMuleEvent.java:713)
at org.mule.RequestContext.newEvent(RequestContext.java:135)
at org.mule.RequestContext.setEvent(RequestContext.java:72)
at org.mule.construct.SimpleFlowConstruct.process(SimpleFlowConstruct.java:125)
at org.mule.config.spring.factories.FlowRefFactoryBean$1.process(FlowRefFactoryBean.java:40)
at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:72)
at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:89)
at org.mule.processor.AbstractInterceptingMessageProcessor.processNext(AbstractInterceptingMessageProcessor.java:81)
at org.mule.interceptor.AbstractEnvelopeInterceptor.process(AbstractEnvelopeInterceptor.java:55)
at org.mule.processor.AsyncInterceptingMessageProcessor.processNextTimed(AsyncInterceptingMessageProcessor.java:122)
at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker.doRun(AsyncInterceptingMessageProcessor.java:212)
at org.mule.work.AbstractMuleEventWork.run(AbstractMuleEventWork.java:41)
at org.mule.work.WorkerContext.run(WorkerContext.java:309)
答
这似乎是一个真正的错误给我。我无法想到可能会做错的事情,这会导致异步消息范围在复制消息属性时抛出ConcurrentModificationException。
也许你的下一步应该是在MuleSoft JIRA中创建一个问题。如果您是MuleSoft企业客户,我鼓励您在您的支持门户中创建一个案例,这可以帮助您将问题转移到线路的前端。我建议链接到这两个*问题。
能否请你解释你在这里的问题??你需要提供你的骡子配置,以便你的问题可以被检测到.. – 2014-09-27 06:55:22
请用你的完整骡流更新你的问题..请不要写你的骡子在评论部分流动..这是非常难以阅读..请更新与你的流量问题 – 2014-09-29 10:08:34
请看看更新的问题 – rst 2014-09-29 12:52:32