aktualisierenMQTT zu ActiveMQ THEMA nehmen viel Zeit in Ereignisempfänger von WSO2 CEP
Im Quellcode von MQTTAdapterListener des Kohlenstoff-Analytik-gemeinsames Projekt wie dieses link
Die run()
wird tief verbinden Thread und ich glaube, das ist der Grund, warum die MQTT-Verbindung so lange dauern wird.
@Override
public void run() {
while (!connectionSucceeded) {
try {
MQTTEventAdapterConstants.initialReconnectDuration = MQTTEventAdapterConstants.initialReconnectDuration
* MQTTEventAdapterConstants.reconnectionProgressionFactor;
Thread.sleep(MQTTEventAdapterConstants.initialReconnectDuration);
startListener();
connectionSucceeded = true;
log.info("MQTT Connection successful");
} catch (InterruptedException e) {
log.error("Interruption occurred while waiting for reconnection", e);
} catch (MqttException e) {
log.error("MQTT Exception occurred when starting listener", e);
}
}
}
Die initialReconnectDuration und reconnectionProgressionFactor sind wie unten in MQTTEventAdapterConstants
public static int initialReconnectDuration = 10000;
public static final int reconnectionProgressionFactor = 2;
Wenn I 12 Empfänger mit MQTT haben, wird die 12. einem 40.960 Sekunden zu schlafen. Es scheint, dass es keine Möglichkeit gibt, diese beiden Konstanten zu modifizieren? Gibt es eine Möglichkeit, dieses Problem zu lösen? Warum wird die MQTT-Verbindung auf diese Weise auf "Schlaf" festgelegt?
Wir verwenden WSO2 CEP Version 4.0.0 und ActiveMQ Version 5.13.0. Der entfaltete Ereignisempfänger ist als unten
<?xml version="1.0" encoding="UTF-8"?>
<eventReceiver name="5718a6b1851cb3474c6f03c2_PROBE_DATA_RECEIVER"
statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventreceiver">
<from eventAdapterType="mqtt">
<property name="clientId">5718a6b1851cb3474c6f03c2</property>
<property name="topic">PROBE_DATA_571844f5851cb3474c6f0391_57184581851cb3474c6f0394_Topic</property>
<property name="cleanSession">false</property>
<property name="url">tcp://127.0.0.1:1883</property>
</from>
<mapping customMapping="enable" type="json">
<property>
<from jsonPath="$.event.payloadData.dyna.Speed3"/>
<to name="speed" type="double"/>
</property>
</mapping>
<to streamName="5718a6b1851cb3474c6f03c2_PROBE_DATA_IS" version="1.0.0"/>
</eventReceiver>
ClientId ist ein zufälliges Objekt Id dieses Ereignisses Ausführungsplan in unserer Datenbank intern. Das Thema ist in der ActiveMQ vorhanden und ich bin sicher, dass die Nachricht in die Warteschlange eingereiht wurde. Die Eigenschaft "clean session" wurde für permanente Subskription auf "false" gesetzt.
Aber der Empfänger benötigt immer eine Menge Zeit, um sich mit dem ActiveMQ TOPIC zu verbinden, was auch immer, nachdem wir WSO2 CEP neu gestartet oder einen neuen Empfänger eingesetzt haben.
[2016-04-24 01:07:59,018] INFO {org.wso2.carbon.event.processor.manager.core.internal.CarbonEventManagementService} - Starting polling event receivers
[2016-04-24 01:07:59,019] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 56f66bcc7a22442328cd229a_PROBE_DATA_RECEIVER
[2016-04-24 01:07:59,020] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 5718a6b1851cb3474c6f03c2_PROBE_DATA_RECEIVER
[2016-04-24 01:07:59,021] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 57144fa0851cb33590672418_X_DATA_RECEIVER
[2016-04-24 01:07:59,022] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 5714b5f4851cb3338c26a1cc_PROBE_DATA_RECEIVER
[2016-04-24 01:07:59,022] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 571b9ef4851cb356e04ec90b_PROBE_DATA_RECEIVER
[2016-04-24 01:07:59,023] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 5714a305851cb3338c26a1c4_DELIVERY_ORDER_RECEI
VER
[2016-04-24 01:07:59,023] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 56f6b03e7a22440c30855015_PROBE_DATA_RECEIVER
[2016-04-24 01:07:59,024] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 56f665f27a22442328cd2299_PROBE_DATA_RECEIVER
[2016-04-24 01:07:59,024] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 5718a5d7851cb3474c6f03bf_PROBE_DATA_RECEIVER
[2016-04-24 01:07:59,025] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 56ef98137a22442e28360c0b_DELIVERY_ORDER_RECEI
VER
[2016-04-24 01:07:59,026] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 571747f2851cb3338c26a1da_PROBE_DATA_RECEIVER
[2016-04-24 01:07:59,026] INFO {org.wso2.carbon.event.input.adapter.core.internal.InputAdapterRuntime} - Connecting receiver 56f66c657a22442328cd229c_PROBE_DATA_RECEIVER
[2016-04-24 01:08:19,044] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 01:08:39,041] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 01:09:19,034] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 01:10:39,037] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 01:13:19,046] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 01:18:39,035] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 01:29:19,038] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 01:50:39,036] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 02:33:19,039] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 03:58:39,043] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 06:49:19,038] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
[2016-04-24 12:30:39,040] INFO {org.wso2.carbon.event.input.adapter.mqtt.internal.util.MQTTAdapterListener} - MQTT Connection successful
gibt es 12 Empfänger, WSO2 Start bei 1.07.59 auf Abruf. Nach etwa 10 Minuten sind nur 6 von 12 Empfängern erfolgreich verbunden, die anderen benötigen etwa 10 oder mehr Stunden.
Weiß jemand, warum die MQTT des WSO2 CEP-Empfängers wird so langsam verbinden?
Hallo Rajeev, ich schätze wirklich für Ihre wunderbare Idee und Antwort. Ich habe die WSO2CEP überprüft, die ich verwendet habe, ist Version 4.0.0 und der MQTT in seinem Repository \ components \ plugins ist org.wso2.carbon.event.input.adapter.mqtt_5.0.3.jar. Also habe ich den Quellcode des Tags v5.0.3 von carbon-analytics-common-project ausgecheckt, den Code modifiziert und maven das org.wso2.carbon.event.input.adapter.mqtt-Modul erstellt. Schließlich habe ich eine org.wso2.carbon.event.input.adapter.mqtt-5.0.3.jar! – Bruce
Aber ich kann immer noch nicht herausfinden, wie man den WSO2CEP repariert. Der Patch von WSO2 ist einfach eine .jar-Datei und wird in/repository/components/patches /? Ich habe das getan und den WSO2CEP-Server neu gestartet, aber es funktioniert nicht, ob mit -DapplyPatches rugged. –
Bruce
BTW, wegen des Dateinamens, den ich gebaut habe, ist org.wso2.carbon.event.input.adapter.mqtt-5.0.3.jar und der in WSO2CEP-Plugins ist org.wso2.carbon.event.input.adapter .mqtt_5.0.3.jar. Also habe ich mein Build-Jar in org.wso2.carbon.event.input.adapter.mqtt_5.0.3.jar umbenannt und in den Patches-Ordner gelegt. – Bruce