Исключения Bitronix при отправке jms в activemq MuleESB

Я работаю над проектом MuleESB, где я получаю сообщения от ActiveMQ, которые содержат изображения, закодированные в Base64, когда я закончу обработку сообщения, я попытаюсь отправить его в другую очередь, но затем я получаю следующую ошибку. Кто-нибудь знает, почему это исключение происходит:

Я предполагаю, что обработка вашего сообщения прошла успешно (никаких исключений не было). Таким образом, одной из возможных причин может быть истечение времени ожидания транзакции. Я бы посоветовал вам включить журналы транзакций Bitronix (возможно, уменьшив количество одновременных получателей входящей очереди до одного, чтобы ваши журналы были менее загромождены).


person Yantes    schedule 11.03.2016    source источник


Ответы (1)


Также прошу ответить на следующие вопросы:

1 . Это исключение происходит для всех сообщений? или он прерывистый? 2 . Сколько времени занимает обработка входящего сообщения? 3 . Какой у вас таймаут транзакции? 4 . Какую версию Mule вы используете?

Я спрашиваю об этом, потому что я столкнулся с чем-то очень похожим и нашел основную причину. Если бы я мог получить ответы на вышеуказанные вопросы, я мог бы быть более конкретным в дальнейших обновлениях.

Обновление:

Велика вероятность, что это может быть первопричиной. Взгляни.

https://www.mulesoft.org/jira/browse/MULE-8964

Обновить

Если у вас лицензия EE, исправление этой проблемы доступно в версии 3.7.3. Это то, что они добавили, чтобы исправить проблему.

https://github.com/mulesoft/mule/commit/1b1bfafda3e8dc16b596a150fc2a8b518382cd20#diff-1

Вот краткое изложение проблемы:

Mule опрашивает сообщения JMS с тайм-аутом опроса, таким же, как настроенный тайм-аут транзакции xa (по умолчанию: 60 секунд). Таким образом, поток опроса ожидает поступления сообщения в очередь не более 60 секунд. XA транзакция начинается в момент начала опроса. Рассмотрим сценарий, в котором поток опроса получает сообщение очень близко к тайм-ауту опроса; скажем, на 59-й секунде (Здесь транзакция XA близка к тайм-ауту, потому что она началась, когда был инициирован опрос). Если обработка сообщения займет еще 5 секунд, общее время транзакции XA составит 64 секунды (59 + 5). Прежде чем обработка завершится, диспетчер транзакций уничтожает транзакцию, поскольку она превысила время ожидания XA.

Это исключение возникает случайным образом, но в основном, когда я нахожусь в режиме отладки. Я не установил время ожидания транзакции, поэтому по умолчанию оно должно составлять 60 секунд в соответствии с docs.mulesoft.com/mule-user-guide/v/3.5/. Если я хочу установить его, это делается путем настройки файла wrapper.conf в автономной версии, но как мне это сделать для Anypoint Studio (если вы знакомы с этим? это просто расширение eclipse для muleesb). Обработка сообщения с картинками занимает не более нескольких секунд. Мул версии 3.7.0. @дживи

person jivi    schedule 12.03.2016
comment
Обычно это происходит в соединениях jms на исходящей конечной точке. Поэтому я попытался пометить все входящие конечные точки как ALWAYS_BEGIN, а исходящие конечные точки — как ALWAYS_JOIN. Но это не помогло. - person Yantes; 14.03.2016
comment
Велика вероятность, что это может быть первопричиной. Взгляни. mulesoft.org/jira/browse/MULE-8964 Я обновил основной поток с более подробной информацией. Надеюсь, поможет - person Yantes; 14.03.2016
comment
Хорошо, большое спасибо, похоже, это помогло обновиться до 3.7.3, но теперь я получил другую ошибку, которая _1_ моя студия говорит Элемент: свойство не может быть дочерним элементом элемента JMS и в соответствии с stackoverflow.com/questions/17224946/ это проблема более старых версий mule, и это не было исправлено. Вы знаете что-нибудь об этом? - person jivi; 16.03.2016
comment
Я думаю, что среда выполнения все еще должна работать. Не обращайте внимания на предупреждение и попробуйте запустить архив приложения в автономном экземпляре. - person Yantes; 17.03.2016
comment
ОШИБКА 11 марта 2016 г., 14:00:24,168 [Active_MQ.scheduler.04] org.mule.exception.CatchMessagingExceptionStrategy: ************************ ******************************************************* ****** Сообщение: транзакция помечена только как откат (bitronix.tm.internal.BitronixRollbackException) Тип
: org.mule.api.transaction.TransactionException Code
: 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.BitronixTransaction:116 (null) 2. транзакция помечена только как откат (bitronix. tm.internal.BitronixRollbackEx ception) (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(Unknown Источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:606) в com.mulesoft.mule.bti.jms.BitronixSessionInvocationHandler.invoke(BitronixSessionInvocationHandler .java:54) в com.sun.proxy.$Proxy116.enlist(неизвестный источник) в 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.JmsMessa geDispatcher.applyOutboundTransformers(JmsMessageDispatcher.java:506) в org.mule.transport.AbstractMessageDispatcher.process(AbstractMessageDispatcher.java:71) в org.mule.transport.AbstractConnector$DispatcherMessageProcessor.process(AbstractConnector.java:2662) в org.mule Выполнить 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.java:Execute(MessageProcessorExecutionTemplate.java:Execute) в 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(ExceptionToMessagingExceptionExecutionExecutionInterceptor.java:24) at .MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:107) в org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) в org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24mulemule) в выполнение.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) в org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:94) в o rg.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... - person jivi; 18.03.2016