0

Base64 でエンコードされた画像を含む ActiveMQ からメッセージを受信する MuleESB プロジェクトに取り組んでいます。メッセージの処理が完了したら、別のキューに送信しようとしましたが、次のエラーが発生しました。この例外が発生する理由を知っている人はいますか:

エラー 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.BitronixTransaction: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: トランザクションはロールバックとしてマークされましたorg.mule.transaction.XaTransaction.enlistResource(XaTransaction. java:311) com.mulesoft.mule.bti.jms.BitronixSessionInvocationHandler.enlist(BitronixSessionInvocationHandler.java:110) で sun.reflect.GeneratedMethodAccessor123.invoke(不明なソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43) com.mulesoft.mule.bti.jms の java.lang.reflect.Method.invoke(Method.java:606)。com.sun.proxy.$Proxy116.enlist の BitronixSessionInvocationHandler.invoke(BitronixSessionInvocationHandler.java:54) org.mule.transaction.XaTransaction.bindResource(XaTransaction.java:287) の org.mule.transport.AbstractConnector org.mule.transport.jms.transformers.AbstractJmsTransformer.getSession(AbstractJmsTransformer.java:199) の .getTransactionalResource(AbstractConnector.java:2041) 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(JmsMessageDispatcherjava:506) org org.mule.transport.AbstractConnector$DispatcherMessageProcessor.process(AbstractConnector.java:2662) の .mule.transport.AbstractMessageDispatcher.process(AbstractMessageDispatcher.java:71) org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:107) で 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.processor.AsyncInterceptingMessageProcessor.process(AsyncInterceptingMessageProcessor.java:102) で org.mule.execution. org.mule.execution.MessageProcessorNotificationExecutionInterceptor の ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24)。org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) で実行 (MessageProcessorNotificationExecutionInterceptor.java:107) org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) でorg.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) で org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) で .execute(MessageProcessorNotificationExecutionInterceptor.java:107)。 MessageProcessorNotificationExecutionInterceptor.org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:44) で実行 (MessageProcessorNotificationExecutionInterceptor.java:107) org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:24) で.execute(MessageProcessorExecutionTemplate.java:44) で org.mule.processor.BlockingProcessorExecutor.executeNext(BlockingProcessorExecutor.java:94) で org.mule.processor.BlockingProcessorExecutor.execute(BlockingProcessorExecutor.java:56) で org.mule.endpoint. org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor の outbound.OutboundResponsePropertiesMessageProcessor.process(OutboundResponsePropertiesMessageProcessor.java:35)。実行 (ExceptionToMessagingExceptionExecutionInterceptor.java:24) org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute (MessageProcessorNotificationExecutionInterceptor.ja...

4

1 に答える 1

0

メッセージ処理が成功したと仮定しています (例外はスローされませんでした)。そのため、考えられる理由の 1 つは、トランザクションがタイムアウトしている可能性があります。bitronix トランザクション ログを有効にすることをお勧めします (おそらく、ログが乱雑にならないように、インバウンド キューの同時受信者数を 1 に減らすことによって)。

また、以下の質問にお答えください。

1. この例外はすべてのメッセージで発生しますか? それとも断続的ですか?2. 受信メッセージの処理にかかる時間は? 3. トランザクションのタイムアウトは? 4 . Mule のどのバージョンを使用していますか?

私は非常によく似たものに直面し、根本的な原因を見つけたので、これを尋ねています。上記の質問に対する回答を得ることができれば、今後の更新でより具体的にすることができます.

アップデート:

これが根本的な原因である可能性が非常に高いです。見てください。

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

アップデート

ライセンスが EE の場合、問題の修正は v3.7.3 で利用できます。これは、問題を修正するために追加されたものです。

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

問題の概要は次のとおりです。

Mule は、構成された xa トランザクション タイムアウト (デフォルト: 60 秒) と同じポーリング タイムアウトで JMS メッセージをポーリングします。したがって、ポーリング スレッドは、メッセージがキューに到着するまで最大 60 秒間待機します。XA トランザクションは、ポーリングが開始された時点で開始されます。ポーリング スレッドがポーリング タイムアウトに非常に近いメッセージを受信するシナリオを考えてみましょう。たとえば、59 秒目です (XA トランザクションは、ポーリングが開始されたときに開始されたため、ここでタイムアウトに近づいています)。メッセージ処理にさらに 5 秒かかる場合、XA トランザクションの合計時間は 64 秒 (59 + 5) になります。処理が完了する前に、XA タイムアウトを超えたため、トランザクション マネージャーはトランザクションを強制終了します。

于 2016-03-12T18:51:02.753 に答える