【问题标题】:Camel HL7 - ClosedChannelException while sending ACK back to the clientCamel HL7 - 将 ACK 发送回客户端时出现 ClosedChannelException
【发布时间】:2018-03-09 01:58:57
【问题描述】:

我正在使用 netty4 构建一个 HL7 侦听器并处理 HL7 消息。一旦成功处理,就会发回一个 ACK​​。

 from("hl7NettyListener") 
      .routeId("route_hl7listener")
        .startupOrder(997)
          .unmarshal()
           .hl7(false)               
           .to("direct:a");



    from("direct:a") 
        .doTry()
            .to("bean:processHL7?method=process")        
        .doCatch(HL7Exception.class)
            .to("direct:ErrorACK")
            //.transform(ack())
            .stop()
        .end()
        .transform(ack())       
        .wireTap("direct:b");

这在我的本地日食中运行良好。我触发了一条 HL7 消息,然后我收到了一个 Ack。

但是我将这个应用程序打包到一个 jar 中并放在我的服务器上,然后尝试做一个

cat example.hl7 | netcat localhost 4444 (to fire a HL7 message to port 4444 on linux env)

我没有收到回复。我得到一个关闭的连接异常。

调试 NettyConsumer - 频道:[id: 0xdf13b06b, L:0.0.0.0/0.0.0.0:4444] 写作主体:MSH|^~\&|Karisma||Kestral|Kestral|20180309144109.827+1300||ACK^R01 |701||2.3.1 2018-03-09 14:41:09,838 [ad #3 - WireTap] 调试 WireTapProcessor - >>>>(窃听)直接:b Exchange[] 2018-03-09 14:41:09,839 [ServerTCPWorker] 调试 NettyConsumer - 原因:[org.apache.camel.CamelExchangeException - 无法写入对 null 的响应。交易所[ID-annan06-56620-1520559639101-0-2]。引起:[java.nio.channels.ClosedChannelException - null]] org.apache.camel.CamelExchangeException:无法写入对 null 的响应。交易所[ID-annan06-56620-1520559639101-0-2]。引起:[java.nio.channels.ClosedChannelException - null] 在 org.apache.camel.component.netty4.handlers.ServerResponseFutureListener.operationComplete(ServerResponseFutureListener.java:54) 在 org.apache.camel.component.netty4.handlers.ServerResponseFutureListener.operationComplete(ServerResponseFutureListener.java:36) 在 io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:514) 在 io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:488) 在 io.netty.util.concurrent.DefaultPromise.access$000(DefaultPromise.java:34) 在 io.netty.util.concurrent.DefaultPromise$1.run(DefaultPromise.java:438) 在 io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) 在 io.netty.util.concurrent.SingleThreadEventExecutor.runAllTask​​s(SingleThreadEventExecutor.java:418) 在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:440) 在 io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873) 在 java.lang.Thread.run(Thread.java:748) 引起:java.nio.channels.ClosedChannelException 在 io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)

【问题讨论】:

    标签: apache-camel netty hl7 spring-camel


    【解决方案1】:

    那行得通。它失败了,因为 netcat 立即关闭了连接。已经放了一个“netcat -i 5 localhost”让netcat等待5秒并成功收到ACK。

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 2020-04-24
      • 1970-01-01
      • 2021-02-20
      • 2015-10-04
      • 2019-06-09
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      相关资源
      最近更新 更多