[
https://issues.apache.org/jira/browse/CAMEL-7922?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Willem Jiang reassigned CAMEL-7922:
-----------------------------------
Assignee: Willem Jiang
> MQTT endpoint misses QoS > 0 messages due to startup timing issue
> -----------------------------------------------------------------
>
> Key: CAMEL-7922
> URL: https://issues.apache.org/jira/browse/CAMEL-7922
> Project: Camel
> Issue Type: Bug
> Components: camel-mqtt
> Affects Versions: 2.14.0
> Reporter: Davy De Waele
> Assignee: Willem Jiang
>
> The FuseSource client can start receiving messages as a result of a topic
> subscription BEFORE any consumers have been registered on the MQTT endpoint.
> When the MQTT Endpoint is started the MQTT connection is established, causing
> an immediate influx of persisted messages. Issue is that at this point, no
> consumers are available yet to process these messages.
> *Receiving a PUBLISH message*
> Publish message are received without any consumers. Result : msg with QoS > 0
> are never processed.
> {noformat}
> Daemon Thread [hawtdispatch-DEFAULT-3] (Suspended (breakpoint at line 815 in
> CallbackConnection))
> CallbackConnection.toReceiver(PUBLISH) line: 815
> CallbackConnection.processFrame(MQTTFrame) line: 732
> CallbackConnection.access$1500(CallbackConnection, MQTTFrame) line: 51
> CallbackConnection$6.onTransportCommand(Object) line: 392
> TcpTransport.drainInbound() line: 709
> TcpTransport$6.run() line: 588
> NioDispatchSource$3.run() line: 209
> SerialDispatchQueue.run() line: 100
> SimpleThread.run() line: 77
> {noformat}
> *No consumers registered yet*
> Only when this finishes will Camel be able to process the messages.
> {noformat}
> Daemon Thread [localhost-startStop-1] (Suspended (breakpoint at line 164 in
> MQTTEndpoint))
> owns: SpringCamelContext (id=92)
> owns: Object (id=143)
> owns: StandardContext (id=144)
> MQTTEndpoint.addConsumer(MQTTConsumer) line: 164
> MQTTConsumer.doStart() line: 35
> MQTTConsumer(ServiceSupport).start() line: 61
> SpringCamelContext(DefaultCamelContext).startService(Service) line:
> 2158
>
> SpringCamelContext(DefaultCamelContext).doStartOrResumeRouteConsumers(Map<Integer,DefaultRouteStartupOrder>,
> boolean, boolean) line: 2452
>
> SpringCamelContext(DefaultCamelContext).doStartRouteConsumers(Map<Integer,DefaultRouteStartupOrder>,
> boolean) line: 2388
>
> SpringCamelContext(DefaultCamelContext).safelyStartRouteServices(boolean,
> boolean, boolean, boolean, Collection<RouteService>) line: 2318
>
> SpringCamelContext(DefaultCamelContext).doStartOrResumeRoutes(Map<String,RouteService>,
> boolean, boolean, boolean, boolean) line: 2091
> SpringCamelContext(DefaultCamelContext).doStartCamel() line: 1951
> SpringCamelContext(DefaultCamelContext).doStart() line: 1777
> {noformat}
> These messages will never be picked up untill camel is restarted.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)