gpt4 book ai didi

java - 发送 HL7 消息后何时关闭并重新打开套接字

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:08 25 4
gpt4 key购买 nike

我正在尝试打开到 HL7 服务器的基本连接,我在其中发送请求并获得 ACK 响应。这将持续进行。

  1. 如果这是连续进行的,我什么时候关闭套接字?在这种情况下,我是否正确实现了这一点?
  2. 如果我关闭套接字,我该如何再次打开它? ConnectionHub 的 javadoc 指示如下:
attach(java.lang.String host, int port, Parser parser, 
java.lang.Class<? extends LowerLayerProtocol> llpClass)

Returns a Connection to the given address, opening this Connection if necessary.

然而,在现实生活中,如果它已经关闭,它不会打开一个新的连接。

Patient patient = appt.getPatient();
Parser parser = new GenericParser();
Message hl7msg = parser.parse(wlp.getORMString(appt));

//Connect to listening servers
ConnectionHub connectionHub = ConnectionHub.getInstance();
// A connection object represents a socket attached to an HL7 server
Connection connection = connectionHub.attach(serverIP, serverPort,
new PipeParser(), MinLowerLayerProtocol.class);
if (!connection.isOpen()) {
System.out.println("CONNNECTION is CLOSED");
connection = connectionHub.attach(serverIP, serverPort, new PipeParser(),
MinLowerLayerProtocol.class);
if (!connection.isOpen()) {
System.out.println("CONNNECTION is still CLOSED");
}
}
Initiator initiator = connection.getInitiator();
Message response = initiator.sendAndReceive(hl7msg);

String responseString = parser.encode(response);
System.out.println("Received response:\n" + responseString);
connection.close();

结果:第一次通过完美,发送了请求并收到了 ACK。对该方法的任何后续调用都会导致客户端出现 java.net.SocketException: Socket closed”。如果我删除 connection.close() 调用,那么它将在一定时间内正常运行,然后套接字将自行关闭。

最佳答案

如果您通过 HL7 2.X 进行通信,套接字上的预期行为是永不断开连接——您分配连接并保持套接字处于 Activity 状态。换句话说,HL7 应用程序像网络浏览器那样工作,它根据需要连接,完成后断开连接。相反,两端工作以保持套接字持续连接。如果您断开连接,大多数应用程序都会感到恼火。此外,大多数集成引擎都有警报,如果您断开连接的时间过长,就会发出警报。

连接套接字后,您需要使用 HL7 最小底层协议(protocol)(MLLP 或 MLP)来传达 HL7 2.X 内容。如果您正在发送数据,您应该在发送下一条消息之前等待 HL7 确认。如果您正在接收数据,则应生成 HL7 Ack。

引用资料:

MLP-http://www.hl7standards.com/blog/2007/05/02/hl7-mlp-minimum-layer-protocol-defined

确认 - http://www.corepointhealth.com/resource-center/hl7-resources/hl7-acknowledgement

关于java - 发送 HL7 消息后何时关闭并重新打开套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4304998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com