2016-04-23 2 views
1

UpdateMQTT подключиться к ActiveMQ ТЕМЕ занять много времени в Event Получателем WSO2 CEP

В исходном коде MQTTAdapterListener углеродсодержащих аналитика-общий проект, как этот link

run() будет спать и я считаю, что именно поэтому соединение MQTT займет так много времени.

@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); 

     } 

    } 
} 

initialReconnectDuration и reconnectionProgressionFactor, как показано ниже в MQTTEventAdapterConstants

public static int initialReconnectDuration = 10000; 
public static final int reconnectionProgressionFactor = 2; 

Если у меня есть 12 приемник с MQTT, 12 из них будет спать 40960 секунд. Кажется, что нет возможности изменить эти две константы? Есть ли способ решить эту проблему? Почему соединение MQTT будет отключать поток таким образом?


У нас есть WSO2 CEP версии 4.0.0 и ActiveMQ версии 5.13.0. Развернутая приемник события, как показано ниже

<?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 случайный идентификатор объекта этого события плана выполнения в нашей базе внутренней. Тема существует в ActiveMQ, и я уверен, что сообщение было вложено в нее. Для свойства чистой сессии значение false для длительной подписки.

Но приемник всегда занимает много времени, чтобы подключиться к ActiveMQ TOPIC, независимо от того, как мы перезапустили WSO2 CEP или развернули новый приемник.

[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 

Есть 12 приемников, WSO2 начинают опрос в 01:07:59. Примерно через 10 минут только 6 из 12 приемников подключились успешно, остальные заняли около 10 или более часов.

Кто-нибудь знает, почему MQTT приемника CEP WSO2 будет подключаться так медленно?

ответ

1

Для настройки продолжительности пересоединения и значений прогрессивных коэффициентов не предусмотрено никаких параметров. Но поскольку вы уже поняли код, вы можете исправить этот компонент (либо прочитать эти значения из файла конфигурации, либо настроить его через адаптер ui или только значения жесткого кода), и применить исправление как described here для преодоления этого ограничения.

+0

Привет, Раджив, я очень благодарен за вашу замечательную идею и ответ. Я проверил WSO2CEP, который я использовал, это версия 4.0.0, а MQTT в его репозитории \ components \ plugins - org.wso2.carbon.event.input.adapter.mqtt_5.0.3.jar. Поэтому я проверил исходный код тега v5.0.3 из углерод-аналитики - общий проект, изменил код и создал maven модуль org.wso2.carbon.event.input.adapter.mqtt. Наконец, у меня есть org.wso2.carbon.event.input.adapter.mqtt-5.0.3.jar! – Bruce

+0

Но я все еще не могу понять, как исправлять WSO2CEP. Патч WSO2 - это просто файл .jar и помещен в каталог /репозиторий/компоненты/патчи /? Я сделал это и перезапустил сервер WSO2CEP, но он не работает, если -DapplyPatches. – Bruce

+0

Кстати, из-за имени файла, которое я создал, является org.wso2.carbon.event.input.adapter.mqtt-5.0.3.jar, а в плагинах WSO2CEP - org.wso2.carbon.event.input.adapter .mqtt_5.0.3.jar. Поэтому я переименовал свою построенную банку в org.wso2.carbon.event.input.adapter.mqtt_5.0.3.jar и поместил ее в папку патчей. – Bruce

Смежные вопросы