У нас есть брокер Mqtt в серверной части, который настроен на прием соединений через WebSocket. Все работает, когда я подключаюсь напрямую к этой машине. Но мы хотели бы направлять все звонки через Enterprise integrator. Кажется, я не могу заставить это работать правильно. Серверный веб-сокет прослушивает путь, а не корень (например, машина: 9999/api/mqtt). В целях тестирования серверный брокер Mqtt не имеет защиты. Он принимает каждое соединение, и все могут подписываться и публиковать.
Изменения в axis.xml
<transportReceiver name="mqtt" class="org.apache.axis2.transport.mqtt.MqttListener">
<parameter locked="false" name="mqttConFactory">
<parameter locked="false" name="mqtt.server.host.name">workerv2</parameter>
<parameter name="mqtt.connection.factory">mqttConFactory</parameter>
<parameter locked="false" name="mqtt.server.port">9026</parameter>
<parameter locked="false" name="mqtt.client.id">client-id-1234</parameter>
<parameter locked="false" name="mqtt.topic.name">esb.test</parameter>
</parameter>
</transportReceiver>
<transportSender name="ws" class="org.wso2.carbon.websocket.transport.WebsocketTransportSender">
<parameter name="ws.outflow.dispatch.sequence" locked="false">outflowDispatchSeq</parameter>
<parameter name="ws.outflow.dispatch.fault.sequence" locked="false">outflowFaultSeq</parameter>
</transportSender>
Я скопировал файл jar в папку libs: org.exlipse.paho.client.mqttv3-1.1.0.jar.
Я настроил свои последовательности и входящую конечную точку веб-сокета в соответствии с примером здесь
Я не знаю, как решить эту проблему, я настроил log4j для отображения журналов проводов, но не могу получить от них никакой информации. Я не вижу никаких ошибок, поэтому я думаю, что должен быть рядом (?)
Не могли бы вы мне помочь?
РЕДАКТИРОВАТЬ
Мне удалось настроить подключение через веб-сокет к веб-сокету. При прямом подключении веб-сокет работает, и я могу успешно подключиться. Но когда я подключаюсь через wso2ei, я вижу сообщение в журнале, и все выглядит нормально. Но время ожидания всех запросов истекает через 120 секунд. Я не могу отлаживать заголовки для веб-сокетов. Любая помощь будет оценена по достоинству.
Например, моя последовательность отправки:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="dispatchSeq" xmlns="http://ws.apache.org/ns/synapse">
<log level="full">
<property name="LOGGED_MESSAGE" value="LOGGED"/>
</log>
<send>
<endpoint>
<address uri="ws://10.100.14.8:9026/api/v2/mqtt"/>
</endpoint>
</send>
</sequence>
Моя выходная последовательность
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="outDispatchSeq" trace="enable" xmlns="http://ws.apache.org/ns/synapse">
<log level="full"/>
<respond/>
</sequence>
Моя входящая конечная точка
<?xml version="1.0" encoding="UTF-8"?><inboundEndpoint xmlns="http://ws.apache.org/ns/synapse" name="testMQTT" sequence="dispatchSeq" onError="fault" protocol="ws" suspend="false">
<parameters>
<parameter name="inbound.ws.port">9091</parameter>
<parameter name="ws.client.side.broadcast.level">0</parameter>
<parameter name="ws.outflow.dispatch.sequence">outDispatchSeq</parameter>
<parameter name="ws.outflow.dispatch.fault.sequence">fault</parameter>
<parameter name="ws.use.port.offset">false</parameter>
</parameters>
Log messages
TID: [-1] [] [2018-04-24 14:25:14,675] INFO {org.apache.synapse.mediators.builtin.LogMediator} - To: , MessageID: urn:uuid:decebbbe-8ad7-4174-adb9-1bc324764275, Direction: request, LOGGED_MESSAGE = LOGGED, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope> {org.apache.synapse.mediators.builtin.LogMediator}
TID: [-1] [] [2018-04-24 14:25:16,177] WARN {org.apache.synapse.core.axis2.TimeoutHandler} - Expiring message ID : urn:uuid:26b39fa8-9b5e-44cd-86b3-caa72c30047b; dropping message after GLOBAL_TIMEOUT of : 120 seconds for AnonymousEndpoint, URI : ws://10.100.14.8:9026/api/v2/mqtt, Received through Inbound Endpoint : testMQTT {org.apache.synapse.core.axis2.TimeoutHandler}