我正在开发一个MuleESB项目,我收到来自ActiveMQ的消息,其中包含用Base64编码的图片,当我完成处理消息时我尝试将其发送到另一个队列,但后来我收到以下错误。 有没有人知道为什么会发生这种异常:
错误2016-03-11 14:00:24,168 [Active_MQ.scheduler.04] org.mule.exception.CatchMessagingExceptionStrategy: ************************************************** ******************************消息:事务已标记为仅回滚 (bitronix.tm.internal.BitronixRollbackException)类型
:org.mule.api.transaction.TransactionException代码
:MULE_ERROR - 2 JavaDoc: http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transaction/TransactionException.html ************************************************** ******************************异常堆栈是: 1.事务已被标记为仅回滚(bitronix.tm.internal.BitronixRollbackException)
bitronix.tm.Bitronix事件:116(null) 2.事务已被标记为仅回滚(bitronix.tm.internal.BitronixRollbackException) (org.mule.api.transaction.TransactionException)
org.mule.transaction.XaTransaction:315 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transaction/TransactionException.html) ************************************************** ******************************根异常堆栈跟踪: bitronix.tm.internal.BitronixRollbackException:事务已经完成 仅标记为回滚 bitronix.tm.BitronixTransaction.enlistResource(BitronixTransaction.java:116) 在 com.mulesoft.mule.bti.transaction.TransactionWrapper.enlistResource(TransactionWrapper.java:53) 在 org.mule.transaction.XaTransaction.enlistResource(XaTransaction.java:311) 在 com.mulesoft.mule.bti.jms.BitronixSessionInvocationHandler.enlist(BitronixSessionInvocationHandler.java:110) 在sun.reflect.GeneratedMethodAccessor123.invoke(未知来源)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:606)at com.mulesoft.mule.bti.jms.BitronixSessionInvocationHandler.invoke(BitronixSessionInvocationHandler.java:54) 在com.sun.proxy。$ Proxy116.enlist(未知来源)at org.mule.transaction.XaTransaction.bindResource(XaTransaction.java:287) 在 org.mule.transport.AbstractConnector.getTransactionalResource(AbstractConnector.java:2041) 在 org.mule.transport.jms.transformers.AbstractJmsTransformer.getSession(AbstractJmsTransformer.java:199) 在 org.mule.transport.jms.transformers.AbstractJmsTransformer.transformToMessage(AbstractJmsTransformer.java:65) 在 org.mule.transport.jms.transformers.ObjectToJMSMessage.transformMessage(ObjectToJMSMessage.java:54) 在 org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:141) 在 org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:89) 在 org.mule.DefaultMuleMessage.transformMessage(DefaultMuleMessage.java:1602) 在 org.mule.DefaultMuleMessage.applyAllTransformers(DefaultMuleMessage.java:1509) 在 org.mule.DefaultMuleMessage.applyTransformers(DefaultMuleMessage.java:1487) 在 org.mule.DefaultMuleMessage.applyTransformers(DefaultMuleMessage.java:1470) 在 org.mule.transport.AbstractMessageDispatcher.applyOutboundTransformers(AbstractMessageDispatcher.java:205) 在 org.mule.transport.jms.JmsMessageDispatcher.applyOutboundTransformers(JmsMessageDispatcher.java:506) 在 org.mule.transport.AbstractMessageDispatcher.process(AbstractMessageDispatcher.java:71) 在 org.mule.transport.AbstractConnector $ DispatcherMessageProcessor.process(AbstractConnector.java:2662) 在 org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) 在 org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:107) 在 org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) 在 org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:94) 在 org.mule.processor.BlockingProcessorExecutor.execute(BlockingProcessorExecutor.java:56) 在 org.mule.processor.AsyncInterceptingMessageProcessor.process(AsyncInterceptingMessageProcessor.java:102) 在 org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) 在 org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:107) 在 org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) 在 org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) 在 org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:107) 在 org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) 在 org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) 在 org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:107) 在 org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) 在 org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) 在 org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) 在 org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:94) 在 org.mule.processor.BlockingProcessorExecutor.execute(BlockingProcessorExecutor.java:56) 在 org.mule.endpoint.outbound.OutboundResponsePropertiesMessageProcessor.process(OutboundResponsePropertiesMessageProcessor.java:35) 在 org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) 在 org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.ja ...
答案 0 :(得分:0)
我假设你的消息处理成功(它没有抛出任何异常)。因此,一个潜在的原因可能是交易超时。我建议您启用bitronix事务日志(可能通过将入站队列的并发接收器数量减少到1来使您的日志不会变得混乱)。
另外,请回答以下问题:
1。所有消息都会出现此异常?还是间歇性的? 2。处理入站邮件需要多长时间? 3。你的交易超时是多少? 4。您使用的是哪个版本的骡子?
我问这个是因为我遇到过非常相似的事情,并找到了根本原因。如果我能得到上述问题的答案,我可以在进一步更新中更具体。
<强>更新强>
极有可能这可能是根本原因。看看。
https://www.mulesoft.org/jira/browse/MULE-8964
<强>更新强>
如果您的许可证是EE,则可以在v3.7.3中找到该问题的修复程序。这是他们为解决问题而添加的内容。
https://github.com/mulesoft/mule/commit/1b1bfafda3e8dc16b596a150fc2a8b518382cd20#diff-1
以下是该问题的摘要:
Mule轮询JMS消息,其轮询超时与配置的xa事务超时相同(默认值:60秒)。 因此,轮询线程最多等待60秒以使消息到达队列。轮询开始的那一刻,XA trnsaction就开始了。考虑一种情况,轮询线程接收的消息非常接近轮询超时;在第59秒说(XA交易在这里接近超时,因为它在启动轮询时开始)。如果消息处理需要另外5秒,则XA事务的总时间将为64秒(59 +5)。在处理完成之前,事务管理器会因为超出XA超时而终止事务。