Шлюз jpos: не удалось отправить ответное сообщение, полученное от удаленного хоста, на запрошенный клиент - PullRequest
0 голосов
/ 22 февраля 2020

Я новичок в jpos. пытаясь использовать jpos-2_1_3 из коробки. Я вижу сообщение, отправленное на удаленный хост, и ответ обратно, но ответное сообщение не доставляется запрошенному клиенту. Получение приведенной ниже ошибки

[HOST_UNREACHABLE] ojtpQueryHost.expired: 111 'mux.rs c 'не отвечает

Я проверил состояние клиента, который подключен и ожидает ответа. Мои файлы конфигурации, как показано ниже

50_server. xml


    <server class="org.jpos.q2.iso.QServer" logger="Q2" name="bnet-server-7003" realm="bnet-server-8000">
        <attr name="port" type="java.lang.Integer">6003</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/CISebcdic.xml" debug="True" />
            <property name="timeout" value="18000"/>
        </channel>
        <request-listener class="org.jpos.iso.IncomingListener" logger="Q2" realm="incoming-request-listener">
            <property name="space"   value="tspace:default" />
            <property name="queue"  value="RSCTXNMGR" />
            <property name="ctx.DESTINATION"  value="rsc" />
        </request-listener>
    </server>

10_канал. xml

<?xml version="1.0" ?>

<channel-adaptor name='rsc-channel' class="org.jpos.q2.iso.ChannelAdaptor" logger="Q2">
    <channel class="org.jpos.iso.channel.BCDChannel"
             packager="org.jpos.iso.packager.GenericPackager" header="6000000000" logger="Q2" >
         <property name="packager-config"  value="cfg/packager/CISascii.xml" debug="True" />
        <property name="host" value="127.0.0.1" />
        <property name="port" value="9000" />
        <property name="keep-alive" value="true" />
    </channel>
    <in>rscbnet-send</in>
    <out>rscbnet-receive</out>
    <reconnect-delay>10000</reconnect-delay>
</channel-adaptor>

20_mux. xml

<?xml version="1.0" ?>

<mux class="org.jpos.q2.iso.QMUX" logger="Q2" name="rsc">
    <in>rscbnet-receive</in>
    <out>rscbnet-send</out>
    <ready>rsc-channel.ready</ready>
    <key>41,11</key>
    <unhandled>rsc-channel-unhandled</unhandled>
</mux>

30_txnmgr. xml

<?xml version='1.0'?>
<txnmgr class="org.jpos.transaction.TransactionManager" logger="Q2">
    <property name="queue" value="RSCTXNMGR"/>
    <property name="sessions" value="10"/>
    <property name="max-sessions" value="128"/>
    <property name="debug" value="true"/>

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

в логе i вижу сообщение отправлено на удаленный хост и получен ответ

<log realm="channel/127.0.0.1:9000" at="2020-02-22T17:11:39.114">
  <send>
    <isomsg direction="outgoing">
      <!-- org.jpos.iso.packager.GenericPackager[cfg/packager/CISascii.xml] -->
      <header>6000000000</header>
      <field id="0" value="0400"/>
      <field id="2" value="4113550001234586"/>
      <field id="3" value="003000"/>
      <field id="4" value="000000005000"/>
      <field id="7" value="0218135108"/>
      <field id="11" value="570164"/>
      <field id="12" value="005106"/>
      <field id="13" value="0219"/>
      <field id="14" value="1906"/>
      <field id="18" value="7399"/>
      <field id="22" value="812"/>
      <field id="32" value="001529"/>
      <field id="33" value="004601"/>
      <field id="37" value="702011961044"/>
      <field id="39" value="00"/>
      <field id="41" value="W1Q99999"/>
      <field id="42" value="25233065       "/>
      <field id="43" value="Apple NZ GCS           Sydney         AU"/>
      <field id="48" value="543432303730313033323130363331355649533237333634353032313920203230303153" type="binary"/>
      <field id="49" value="036"/>
      <field id="61" value="10251040066000362000"/>
      <field id="90" value="010057016402181351080000000152900000004601"/>
    </isomsg>
  </send>
</log>
<log realm="channel/127.0.0.1:9000" at="2020-02-22T17:11:39.115" lifespan="179071ms">
  <receive>
    <isomsg direction="incoming">
      <!-- org.jpos.iso.packager.GenericPackager[cfg/packager/CISascii.xml] -->
      <header>6000000000</header>
      <field id="0" value="0410"/>
      <field id="2" value="4113550001234586"/>
      <field id="3" value="003000"/>
      <field id="4" value="000000005000"/>
      <field id="7" value="0221223852"/>
      <field id="11" value="620156"/>
      <field id="12" value="093850"/>
      <field id="13" value="0222"/>
      <field id="14" value="1906"/>
      <field id="18" value="7399"/>
      <field id="22" value="812"/>
      <field id="32" value="001529"/>
      <field id="33" value="004601"/>
      <field id="37" value="702011079220"/>
      <field id="39" value="00"/>
      <field id="41" value="W1Q99999"/>
      <field id="42" value="25233065       "/>
      <field id="43" value="Apple NZ GCS           Sydney         AU"/>
      <field id="48" value="543432303730313033323130363331353030303030303030303030303020203230303153" type="binary"/>
      <field id="49" value="036"/>
      <field id="61" value="10251040066000362000"/>
      <field id="90" value="010062015602212238520000000152900000004601"/>
    </isomsg>
  </receive>
</log>
<log realm="org.jpos.transaction.TransactionManager" at="2020-02-22T17:12:09.115" lifespan="30001ms">
  <abort>
    txnmgr-9:idle:2
    <context>
      TIMESTAMP: Sat Feb 22 17:11:39 AEDT 2020
      SOURCE: org.jpos.iso.channel.NACChannel@795c411
      REQUEST:
       <isomsg direction="outgoing">
         <!-- org.jpos.iso.packager.GenericPackager[cfg/packager/CISascii.xml] -->
         <header>6000000000</header>
         <field id="0" value="0400"/>
         <field id="2" value="4113550001234586"/>
         <field id="3" value="003000"/>
         <field id="4" value="000000005000"/>
         <field id="7" value="0218135108"/>
         <field id="11" value="570164"/>
         <field id="12" value="005106"/>
         <field id="13" value="0219"/>
         <field id="14" value="1906"/>
         <field id="18" value="7399"/>
         <field id="22" value="812"/>
         <field id="32" value="001529"/>
         <field id="33" value="004601"/>
         <field id="37" value="702011961044"/>
         <field id="39" value="00"/>
         <field id="41" value="W1Q99999"/>
         <field id="42" value="25233065       "/>
         <field id="43" value="Apple NZ GCS           Sydney         AU"/>
         <field id="48" value="543432303730313033323130363331355649533237333634353032313920203230303153" type="binary"/>
         <field id="49" value="036"/>
         <field id="61" value="10251040066000362000"/>
         <field id="90" value="010057016402181351080000000152900000004601"/>
       </isomsg>

      DESTINATION: rsc
      **RESULT:
       <result>
         <fail>
           [HOST_UNREACHABLE] o.j.t.p.QueryHost.expired:111 'mux.rsc' does not respond
         </fail>
       </result>**

      :paused_transaction:
       id: 2

    </context>
            prepare: o.j.t.p.QueryHost PREPARED PAUSE READONLY NO_JOIN
            prepare: o.j.t.p.SendResponse ABORTED READONLY NO_JOIN
     in-transit=0, head=3, tail=3, paused=0, outstanding=0, active-sessions=10/128, tps=0, peak=1, avg=0.00, elapsed=30001ms
    <profiler>
      prepare: o.j.t.p.QueryHost [0.3/0.3]
      resume [30000.5/30000.8]
      prepare: o.j.t.p.SendResponse [0.1/30001.0]
      end [1.1/30002.2]
    </profiler>
  </abort>
</log>
<log realm="Q2.system" at="2020-02-22T17:12:43.242">

Будет здорово, если я получу некоторую помощь для решения этой проблемы. Заранее спасибо.

1 Ответ

0 голосов
/ 25 февраля 2020

Чтобы обобщить в ответе то, что было объяснено в комментариях, проблема заключалась в том, что поле 11 не соответствовало ответу. Из-за этого мультиплексор не знал, что входящее сообщение было ответом на запрос.

Вы можете увидеть поля по умолчанию, используемые для сопоставления ответов на запросы по QMUX, и узнать, как настроить другой набор ключей в Руководство программиста jPOS раздел 8.3.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...