我正在使用 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 - >>>>(窃听)direct: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] at org.apache.camel.component.netty4.handlers.ServerResponseFutureListener。