2017-05-02 4 views
0

私のRabbitMQリスナーに次のエラーが発生しています。 私は、スプリング統合4.3.3(spring-boot-starter-amqpとspring-integration-amqp)を使用して、Springブート1.4.1を使用します。私もRabbitMQ 3.5.7を使用しています。切り捨てられたスタックトレースを使用するJava NullPointerException

重要なトラフィックの下で少数のメッセージに対して問題が発生します(ローカルでしか再生できません)。

スタックトレースが私のアプリケーションを指しているのではなく、フレームワークだけを指しているということは私には困ります。私は完全なスタックトレースを添付します。それは春のバグですか、rabbitMQのドライバまたはサーバーですか?

2017-05-02 10:38:42.337 [501de2ff-cd24-4c28-8434-48bc942457d9] WARN 1 --- [messageListenerContainer-2] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed. 

org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception 
     at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:870) 
     at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:780) 
     at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:700) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:95) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:187) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1187) 
     at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:681) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:1165) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:1149) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1100(SimpleMessageListenerContainer.java:95) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1312) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.messaging.MessageHandlingException: nested exception is java.lang.NullPointerException 
     at org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:96) 
     at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:89) 
     at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:109) 
     at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127) 
     at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116) 
     at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:148) 
     at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:121) 
     at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
     at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:423) 
     at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:373) 
     at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115) 
     at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45) 
     at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105) 
     at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput(AbstractMessageProducingHandler.java:292) 
     at org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput(AbstractMessageProducingHandler.java:212) 
     at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs(AbstractMessageProducingHandler.java:129) 
     at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:115) 
     at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127) 
     at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116) 
     at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:148) 
     at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:121) 
     at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) 
     at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:423) 
     at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:373) 
     at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115) 
     at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45) 
     at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105) 
     at org.springframework.integration.endpoint.MessageProducerSupport.sendMessage(MessageProducerSupport.java:171) 
     at org.springframework.integration.amqp.inbound.AmqpInboundChannelAdapter.access$400(AmqpInboundChannelAdapter.java:45) 
     at org.springframework.integration.amqp.inbound.AmqpInboundChannelAdapter$1.onMessage(AmqpInboundChannelAdapter.java:95) 
     at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:777) 
     ... 10 common frames omitted 
Caused by: java.lang.NullPointerException: null 
+1

「原因:java.lang.NullPointerException:null」の後にStackTraceをさらに表示してもよろしいですか? OTOH、メッセージを処理するService Activatorの方法を示してください。 –

+0

完全なスタックトレースを添付しました。それが可能な方法を私の答えをお読みください:) –

答えて

0

長い調査の結果、SpringまたはrabbitMQに問題はないことが判明しました。根本的な原因は自分のコードにありました。

質問に添付されたログには完全なstacktraceがありますが、Javaではスタックトレースが切り捨てられます。

Java 1.5.0で導入されたフラグOmitStackTraceInFastThrowがデフォルトで有効になっています。これはパフォーマンスの最適化です。スタックトレースの共通部分を例外から削除します。

私の場合、この例外の最初の130回の間、私は完全なスタックトレースを持っていました。さらに発生したスタックトレースは切り捨てられました。完全なスタックトレースを取得する最も簡単な方法は、アプリケーションを再起動することでした。

詳細はhttp://jawspeak.com/2010/05/26/hotspot-caused-exceptions-to-lose-their-stack-traces-in-production-and-the-fix/を参照してください。

関連する問題