我们拥有一个物联网平台,该平台使用带有QOS1的PAHO MQTT将数据发布到verneMQ代理。我们在Wso2-das中配置了一个MQTTInputAdapter,它通过QOS0订阅了该主题。
平台的输入速度约为每秒500个数据包。 Wso2-das可以工作几天(行为不一致),但是此后将引发以下异常。当前解决此问题的唯一方法是重新启动das:
TID: [-1234] [] [2019-02-12 12:03:48,614] ERROR {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - Can not unsubscribe from the destination $share/com/tracking with the event adapter track.receiver {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener}
Client is currently disconnecting (32102)
at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:27)
at org.eclipse.paho.client.mqttv3.internal.ClientComms.disconnect(ClientComms.java:409)
at org.eclipse.paho.client.mqttv3.MqttAsyncClient.disconnect(MqttAsyncClient.java:524)
at org.eclipse.paho.client.mqttv3.MqttClient.disconnect(MqttClient.java:250)
at org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener.stopListener(MQTTAdapterListener.java:122)
at org.wso2.carbon.event.input.adapter.mqtt.MQTTEventAdapter.disconnect(MQTTEventAdapter.java:96)
at org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime.destroy(InputAdapterRuntime.java:93)
at org.wso2.carbon.event.input.adapter.core.internal.CarbonInputEventAdapterService.destroy(CarbonInputEventAdapterService.java:172)
at org.wso2.carbon.event.receiver.core.internal.CarbonEventReceiverService.deactivateActiveEventReceiverConfigurationsForAdapter(CarbonEventReceiverService.java:442)
at org.wso2.carbon.event.receiver.core.internal.ds.EventReceiverServiceDS.unSetEventAdapterType(EventReceiverServiceDS.java:173)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.internal.ds.model.ComponentReference.unbind(ComponentReference.java:476)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.unbindDynamicReference(ServiceComponentProp.java:641)
at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicUnBind(InstanceProcess.java:466)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:383)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:225)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.unregisterServices(ServiceRegistry.java:635)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.close(BundleContextImpl.java:88)
at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:514)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:566)
at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1206)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:592)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:257)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:284)
at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:692)
at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:600)
at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:400)
at org.wso2.carbon.core.init.CarbonServerManager.shutdown(CarbonServerManager.java:851)
at org.wso2.carbon.core.init.CarbonServerManager.shutdownGracefully(CarbonServerManager.java:885)
at org.wso2.carbon.core.init.CarbonServerManager$4.run(CarbonServerManager.java:903)
我从此异常中了解到的是Wso2-das尝试断开代理,然后再次尝试重新连接。但是由于断开连接需要时间,因此重新连接失败。 请提出如何调试此问题的建议。