将jms发送到activemq MuleESB时的Bitronix异常

时间:2016-03-11 13:16:28

标签: mule activemq esb bitronix

我正在开发一个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 ...

1 个答案:

答案 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超时而终止事务。