EMA reconnection

Team您好!

针对EMA 连接RTO,如果TCP连接断开,如何捕获状态报错,进而客户重新创建连接/new consumer ?

之前问过类似问题,后台同事总说参考ex330_Login_Streaming demo, 但客户还是不知道怎么捕获。

请协助!

如下是客户问题,如方便我可以组织会议讨论一下。

1.如何捕获tcp 断连异常

2.捕获断连异常如何重新连接

3.是否可以设置tcp重连次数

谢谢!

Tagged:

Best Answer

  • Jirapongse
    Answer ✓

    @gang.chen1

    You need to add the following code into ex450_MP_QueryServiceDiscovery to get the login status messages.

                LoginReq loginReq = EmaFactory.Domain.createLoginReq();
                consumer.registerClient(loginReq.message(), appClient);

    1657765119891.png

    Then, it will get the login status when the channel is down and up.

    StatusMsg
        streamId="1"
        domain="Login Domain"
        state="Open / Suspect / None / 'channel down'"
        name="..."
        nameType="1"
    StatusMsgEnd
    ...
    ...
    StatusMsg
    streamId="1"
    domain="Login Domain"
    state="Open / Ok / None / 'channel up'"
    name="..."
    nameType="1"
    StatusMsgEnd


Answers

  • @ gang.chen1

    Typically, EMA can reconnect to the server when it detects the disconnection. The number of reconnection attempts can be configured via the EMA configuration (ReconnectAttemptLimit ).

    1657620480565.pngHowever, there is an exception when EMA retrieves the login with the CLOSED status from the server. In this case, EMA will not reconnect to the server. To detect this scenario, please refer to the answer on this thread.


  • Thanks Jirapongse !

    Could i ask a Chinese support and have a discussion meeting with client directly ?


  • Hi Jirapongse,

    I am using demo ex450_MP_QueryServiceDiscovery to connect RTO directly, and disconnect the network manually. But I can't receive the login status(domain: 1)

    Also I used demo series300.ex330_Login_Streaming to connect local TREP directly, and disconnect the network manually. In this senario, I can receive the login status(domain: 1) meta.txt

    Do you know what caused it and how could i received login status under RTO?

    thanks