WSO2 ESB - продолжить, если запрос не выполнен - PullRequest
0 голосов
/ 25 июня 2019

Мой вопрос следует за этим вопросом.

Сервер зависает в случайное время, и каждый раз, когда я нажимаю ctrl + c один разна сервере выдает несколько исключений, и после этого все возвращается в нормальное состояние.

Иногда кажется (не всегда), что кто-то отправляет запрос с неверными входами или end-point ответ с неверным сервером вывода зависает инажатие ctrl + c сервер отбрасывает этот запрос и начинает обрабатывать другие заблокированные запросы.

Поэтому я думаю, что мне нужно установить что-то вроде, если запрос не отвечаетнапример, 1 минута не зависает и просто отбрасывает этот запрос.

Я нашел HTTP Transport Properties в документации ESB.Но значение NO_KEEPALIVE недостаточно документировано, и я не уверен в его поведении.

Я спрашиваю, является ли значение NO_KEEPALIVE правильным в этом случае или нет.

Если в этой ситуации лучше использовать другой подход, то он также приветствуется.

Код:

<resource methods="POST" uri-template="/register">
    <inSequence>
        <property description="Store Token" expression="$trp:Authorization" name="token" scope="default" type="STRING"/>
        <property description="Store JSON" expression="json-eval($.)" name="json" scope="default" type="STRING"/>
        <property description="Store MessageId" expression="get-property('MessageID')" name="MESSAGE_ID" scope="default" type="STRING"/>
        <dbreport description="log request">
            <connection>
                <pool>
                    <dsName>jdbc/dc</dsName>
                </pool>
            </connection>
            <statement>
                <sql><![CDATA[INSERT INTO Request (Service, Action, JSON, Requestor, MessageId) values (?,?,?,?,?);]]></sql>
                <parameter type="VARCHAR" value="ServiceV3"/>
                <parameter type="VARCHAR" value="Register"/>
                <parameter expression="get-property('json')" type="VARCHAR"/>
                <parameter expression="get-property('token')" type="VARCHAR"/>
                <parameter expression="get-property('MESSAGE_ID')" type="VARCHAR"/>
            </statement>
        </dbreport>
        <payloadFactory media-type="json">
            <format>{"value":"$1"}</format>
            <args>
                <arg evaluator="json" expression="$.port"/>
            </args>
        </payloadFactory>
        <property description="Force HTTP 1" name="FORCE_HTTP_1.0" scope="axis2" type="STRING" value="true"/>
        <property description="Authorization" expression="get-property('token')" name="Authorization" scope="transport" type="STRING"/>
        <send>
            <endpoint key="Register"/>
        </send>
    </inSequence>
    <outSequence>
        <property description="Store JSON" expression="json-eval($.)" name="json" scope="default" type="STRING"/>
        <dbreport description="log response">
            <connection>
                <pool>
                    <dsName>jdbc/dc</dsName>
                </pool>
            </connection>
            <statement>
                <sql><![CDATA[INSERT INTO Response (Service, Action, Requestor, JSON, MessageId) values (?,?,?,?,?);]]></sql>
                <parameter type="VARCHAR" value="ServiceV3"/>
                <parameter type="VARCHAR" value="Register"/>
                <parameter expression="get-property('token')" type="VARCHAR"/>
                <parameter expression="get-property('json')" type="VARCHAR"/>
                <parameter expression="get-property('MESSAGE_ID')" type="VARCHAR"/>
            </statement>
        </dbreport>
        <send/>
    </outSequence>
    <faultSequence>
        <payloadFactory description="Error" media-type="json">
            <format>{"Message":"Error"}</format>
            <args/>
        </payloadFactory>
        <send/>
    </faultSequence>
</resource>

Журналы ошибок:

Эта ошибка возникла несколько раз.часто и, наконец, на 17:53 сервер зависал без каких-либо дополнительных журналов:

TID: [-1234] [] [2019-06-24 17: 53: 24,643] ОШИБКА {org.apache.synapse.core.axis2.Axis2Sender} - неожиданная ошибка при отправке сообщения {org.apache.synapse.core.axis2.Axis2Sender} org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: неожиданный символCOMMA в org.apache.axiom.om.impl.builder.StAXOMBuilder.next (StAXOMBuilder.java:296)

На следующий день в 11:14, когда я нажал ctrl + c все пришло в норму.И огромное количество заблокированных запросов начало обрабатываться.Первый журнал ошибок в то время был таким, и обычно появляется это сообщение warn.Я не уверен, имеет ли это какое-либо отношение к серверу замораживания.

[2019-06-25 11: 14: 41,147] WARN {org.apache.synapse.transport.passthru.SourceHandler}- Тайм-аут соединения после прочтения запроса: http-входящий-1522 Тайм-аут сокета: 180000 Удаленный адрес: /...:***** {org.apache.synapse.transport.passthru.SourceHandler}

...