Kafka异步生产者消息超时异常

时间:2020-02-13 18:16:25

标签: spring spring-boot kafka-producer-api spring-cloud-stream-binder-kafka

我们有一个Springboot应用程序,该应用程序使用spring-cloud-stream-binder-kafka将消息发送到Kafka Topic。我们正在以同步模式发送消息。我们正在使用同步模式,因为我们想在消息发送过程中出现错误。这已经工作了一段时间了。我们甚至在一小时内对10万条消息进行了负载测试,但从未遇到任何TimeOut Exception。但是最近,我们看到了一些timeout异常。超时主要发生在发送一条消息时。有趣的是,即使我们收到超时异常,消息仍到达Kafka主题。一旦我们收到超时异常,下一组消息将继续进行,而不会发生任何超时。超时异常没有一致性。

代码:

@Service
@EnableBinding(Source.class)
{
try
{
   source .output().send(MessageBuilder.withPayLoad(JsonStringMessage).build();
}
catch(MessageTimeOutException ex)
{
log.error("Kafka MessageTimeOut");
}
}
application .yml :

 spring:
    cloud: 
     stream:
      binders: 
       kafka1:
        type: Kafka
        environment: 
         spring: 
          cloud: 
           stream: 
            kafka:
             binder:
               brokers: broker name
               configuration: 
                  sasl.jass.config: kafkaconnectionstring
                  ssl.mechanism: PLAIN
                  security.protocol: SASL_SSL
                  retries: 3
             bindings:
              output:
               producer: 
                sync:true
      bindings:
        output: 
          binder: kafka1
          destination: Kafka topic name

Springboot版本:2.1.5

Spring-cloud-stream-binder-kafka:2.1.2

异常详细信息:

org.springframework.integration.MessageTimeOutException:等待Kafkaproducer响应的超时;嵌套的异常是java.util.concurrent.TimeoutException

完整StackTrace:

“ org.springframework.integration.MessageTimeoutException:等待KafkaProducer响应的超时;嵌套异常是java.util.concurrent.TimeoutException,org.springframework.integration.kafka.outbound.KafkaProducerMessageHandler.processSendResult(KafkaProducerMessageHandler.java:497) \ tat org.springframework.integration.kafka.outbound.KafkaProducerMessageHandler.handleRequestMessage(KafkaProducerMessageHandler.java:386)\ tat org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:123.work。 handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:169)\ tat org.springframework.cloud.stream.binder.AbstractMessageChannelBinder $ SendingHandler.handleMessageInternal(AbstractMessageChannelBinder.java:1095)\ tat org.springframework.integration.handler.AbstractMessageHandler.handleMessage( AbstractMessageHandler.java:169)\t org.springframework.integrati on.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:115)\ tat org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:132)\ tat org.springframework.integration.dispatcher.UnicastingDispatcher.Dispatch( java:105)\ tat org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:73)\ tat org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:453)\ tat org.springframework。 integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:401)\ tat在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\ tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\ tat java .lang.reflect.Method.invoke(Method.java:498)\ tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)\ tat org.springframework.web.method.su pport.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)\ tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)\ tat org.springframework.web.servlet.mvc。 method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)\ tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)\ tat org.springframework.web.servlet。 mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\ tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)\ tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet。 java:942)\ tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)\ t org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)\ tat javax.servlet.http.HttpServlet.service(HttpServlet.java:660)\ tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)\ tat javax.servlet.http.HttpServlet.service(HttpServlet .java:741)\ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\ tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\ tat org.apache .tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\ tat org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166)\tat org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)\ tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java :107)\ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\ tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:320)\ tat org.springframework.security.web。 access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)\ tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)\ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:334)\ tat org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy。 java:334)\ tat org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\ t org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:334 )\ tat org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:334)\ tat org.springframework .security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)\ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:334)\ tat org.springframework.security.web.savedrequest .RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:334)\ tat org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter (OAuth2AuthenticationProcessingFilter.java:176)\tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:334)\ tat org.spr ingframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)\ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:334)\ tat org.springframework.security。 web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)\ tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter( FilterChainProxy.java:334)\tat org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:334) \ tat org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\ tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) \ tat org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:334)\ tat org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)\ tat org.springframework.security。 web.FilterChainProxy.doFilter(FilterChainProxy.java:178)\ tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)\ tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java: 270)\ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\ tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\ tat org.springframework.web。 filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)\ tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 193)\ tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\ tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)\ tat org.springframework.web.filter.OncePerRequestFilter。 doFilter(OncePerRequestFilter.java:107)\ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\ tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\ tat org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)\ tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\ tat org.apache.catalina.core.ApplicationFilterChain。 internalDoFilter(ApplicationFilterChain.java:193)\ tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\ tat org.springframework.boot.act.ate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter。 Ĵ ava:117)\ tat org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)\ tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) \ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\ tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\ tat org.springframework.web.filter。 CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)\ tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) \ tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\ tat org.cloudfoundry.router.ClientCertificateMapper.doFilter(ClientCertificateMapper.java:77)\ tat org.apache.catalina.core.ApplicationFilterChain。 internalDoFilter(应用nFilterChain.java:193)\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\ tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)\ tat org。 apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)\ tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)\ tat org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:139)\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\ tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)\ tat org。 apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:679)\ tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\ tat org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:408)\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)\ tat org.apache.coyote.AbstractProtocol $ Connection Handler.process(AbstractProtocol.java:836)\ tat org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1747)\ tat org.apache.tomcat.util.net.SocketProcessorBase.run( SocketProcessorBase.java:49)\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\ tat java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)\ tat

0 个答案:

没有答案