【发布时间】:2020-04-11 02:57:39
【问题描述】:
我有以下石英入站组件来触发 kafka 事件。但它似乎正在抛出 SEDA queue Exception。
<quartz:connector name="myQuartzConnector" validateConnections="true">
<receiver-threading-profile maxThreadsActive="1"/>
</quartz:connector>
<flow name="quartz-scheduler-kafka-consumer-trigger-flow">
<quartz:inbound-endpoint jobName="Trigger-Kafka-Consumer-Quartz-Job" repeatInterval="1" responseTimeout="10000" connector-ref="myQuartzConnector" doc:name="Quartz">
<quartz:event-generator-job/>
</quartz:inbound-endpoint>
<component class="org.my.myKafkaCOnsumer" doc:name="Java KafkaConsumer"/>
</flow>
Quartz 用于触发 Kafka 消费流。直到 Kafka 消费者连接在 Java 组件中结束,控制才会返回到调度程序。 Kafka 消费者连接永远不会结束,因为它处于递归 while(true) 循环中。碰巧,如果 Kafka 连接结束,quartz 调度程序应该重新触发重新打开 kafka 连接的 java 组件。
Message : The queue for 'SEDA Stage quartz-scheduler-kafka-consumer-trigger-flow.stage1' did not accept new event within 30000 MILLISECONDS.
Payload : {NullPayload}
Payload Type : org.mule.transport.NullPayload
Element : null @ message-gateway-profile-update-api:null:null
--------------------------------------------------------------------------------
Root Exception stack trace:
org.mule.api.service.FailedToQueueEventException: The queue for 'SEDA Stage quartz-scheduler-kafka-consumer-trigger-flow.stage1' did not accept new event within 30000 MILLISECONDS.
at org.mule.processor.SedaStageInterceptingMessageProcessor.enqueue(SedaStageInterceptingMessageProcessor.java:139)
at org.mule.processor.SedaStageInterceptingMessageProcessor.processNextAsync(SedaStageInterceptingMessageProcessor.java:102)
at org.mule.processor.AsyncInterceptingMessageProcessor.process(AsyncInterceptingMessageProcessor.java:103)
at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
【问题讨论】:
标签: mule mule-component mule-esb