【问题标题】:jpos : How to increase wait time to 40 secs so can handle delayed response messagesjpos:如何将等待时间增加到 40 秒,以便处理延迟的响应消息
【发布时间】:2020-09-07 02:41:59
【问题描述】:

这是另一个系统需要时间来发回响应的情况。 在这种情况下,我希望 jpos 在超时之前等待 40/45 秒。

以下是严重的日志事件:

请求发送到 jpos:

<log realm="channel/127.0.0.1:49142" at="2020-05-21T01:15:54.901" lifespan="1ms">

Jpos 发送消息:

<log realm="channel/127.0.0.1:6269" a**t="2020-05-21T01:15:54.909"** lifespan="2ms">

但是通道超时20秒,客户端请求的事务被断开

<log realm="org.jpos.q2.iso.ChannelAdaptor" at="2020-05-21T01:16:19.593">
  <warn>
    channel-receiver-MIG_NT2_EP6-receive
    Read timeout / EOF - reconnecting
  </warn>
</log>

收到响应的时间是

<log realm="channel/127.0.0.1:6269" at="2020-05-21T01:16:32.610" lifespan="37771ms">

我的频道如下

<?xml version="1.0" ?>

<channel-adaptor name='MIG_NT2_EP6-channel' class="org.jpos.q2.iso.ChannelAdaptor" logger="Q2">
    <channel class="org.jpos.iso.channel.NACChannel"
             packager="org.jpos.iso.packager.GenericPackager"
             logger="Q2"
             header="6000000000"
             >
         <property name="packager-config"  value="cfg/packager/AS280501.xml" debug="True" />

        <property name="host" value="127.0.0.1" />
        <property name="port" value="6336" />
        <property name="timeout" value="180000"/>
    </channel>
    <in>MIG_NT2_EP6-send</in>
    <out>MIG_NT2_EP6-receive</out>
    <reconnect-delay>10000</reconnect-delay>
</channel-adaptor>

我的多路复用器

<?xml version="1.0" ?>

<mux class="org.jpos.q2.iso.QMUX" logger="Q2" name="MIG_NT2_EP6-AUTORESPONDER" debug="True">
    <in>MIG_NT2_EP6-receive</in>
    <out>MIG_NT2_EP6-send</out>
    <ready>MIG_NT2_EP6-channel.ready</ready>
</mux>

txn 管理器

<txnmgr name="mpgs" class="org.jpos.transaction.TransactionManager" logger="Q2">
    <property name="queue" value="MIG_NT2_EP6-TXNMGR"/>
    <property name="sessions" value="2"/>
    <property name="max-sessions" value="128"/>
    <property name="debug" value="true"/>

    <participant class="org.jpos.transaction.participant.QueryHost"/>
    <participant class="org.jpos.transaction.participant.SendResponse"/>
</txnmgr>

服务器

<server class="org.jpos.q2.iso.QServer" logger="Q2" name="MIG_NT2_EP6-server-7336" realm="MIG_NT2_EP6-server-7336">
    <attr name="port" type="java.lang.Integer">7336</attr>
    <channel class="org.jpos.iso.channel.NACChannel"
             packager="org.jpos.iso.packager.GenericPackager"
             type="server"
             logger="Q2"
         header="6000000000"
             >
     <property name="packager-config"  value="cfg/packager/CISascii.xml" debug="True" />
        <property name="timeout" value="180000"/>
    </channel>
    <request-listener class="org.jpos.iso.IncomingListener" logger="Q2" realm="incoming-request-listener">
        <property name="queue"  value="MIG_NT2_EP6-TXNMGR" />
        <property name="ctx.DESTINATION"  value="MIG_NT2_EP6-AUTORESPONDER" />
    </request-listener>
</server>

如何将等待时间增加到 40 秒,以便处理迟到的消息

提前致谢

【问题讨论】:

    标签: jpos


    【解决方案1】:

    您收到的超时不是由于事务超时,而是由于通道超时。

    您的频道超时时间为 180 秒,即 3 分钟,因此如果在连续 3 分钟内没有传入流量,独立于事务的开始,底层套接字将断开连接,这就是您在此处看到的:

    <log realm="org.jpos.q2.iso.ChannelAdaptor" at="2020-05-21T01:16:19.593">
      <warn>
        channel-receiver-MIG_NT2_EP6-receive
        Read timeout / EOF - reconnecting
      </warn>
    </log>
    

    如果您没有回声交换或者您正在测试,我会将该超时禁用为长数字或 0 以禁用它(仅用于测试,您不希望在 prod 中使用它)您希望在 prod 但您需要通过以低于通道超时的间隔发送回显消息来确保流量。

    所以简短的回答是,增加超时时间,而其他超时时间被隐藏,它是QueryHost 中的超时时间,默认为 30 秒。

    如果预计响应将在不到一分钟的时间内到达,您可以在事务管理器中配置一分钟超时,如下所示:

    <txnmgr name="mpgs" class="org.jpos.transaction.TransactionManager" logger="Q2">
        <property name="queue" value="MIG_NT2_EP6-TXNMGR"/>
        <property name="sessions" value="2"/>
        <property name="max-sessions" value="128"/>
        <property name="debug" value="true"/>
    
        <participant class="org.jpos.transaction.participant.QueryHost">
            <property name="timeout" value="60000"/>
        </participant>
        <participant class="org.jpos.transaction.participant.SendResponse"/>
    </txnmgr>
    

    【讨论】:

      猜你喜欢
      • 2021-11-25
      • 2018-06-25
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2020-11-13
      相关资源
      最近更新 更多