第 225 章 MLLP 组件
作为 Camel 2.17 版提供
MLLP 组件专门设计为处理 MLLP 协议的 nuances,并提供医疗提供商使用 MLLP 协议与其他系统通信所需的功能。 MLLP 组件提供简单的配置 URI,自动化 HL7 确认生成和自动确认间。
MLLP 协议通常不使用大量并发 TCP 连接 - 一个活跃的 TCP 连接是正常情况。 因此,MLLP 组件使用基于标准的 JavaSockets 的简单线程-per-connection 模型。这将使实施保持简单,并消除了 Camel 本身之外的其他依赖项。
组件支持以下内容:
- 使用 TCP 服务器的 Camel 使用者
- 使用 TCP 客户端的 Camel 制作者
MLLP 组件使用字节[] 有效负载,并依赖 Camel 类型转换转换将 byte[] 转换为其他类型。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-mllp</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
225.1. MLLP 选项
MLLP 组件支持 5 个选项,它们如下所列。
名称 | 描述 | 默认 | 类型 |
---|---|---|---|
logPhi (advanced) | 设置组件以记录 PHI 数据。 | true | 布尔值 |
logPhiMaxBytes (advanced) | 设置在日志条目中登录的 PHI 的最大字节数。 | 5120 | 整数 |
defaultCharset (advanced) | 将默认字符设置为用于字节/从字符串转换中用于 /。 | ISO-8859-1 | 字符串 |
configuration (common) | 设置创建 MLLP 端点时要使用的默认配置。 | MllpConfiguration | |
resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
MLLP 端点使用 URI 语法进行配置:
mllp:hostname:port
使用以下路径和查询参数:
225.1.1. 路径名(2 参数):
名称 | 描述 | 默认 | 类型 |
---|---|---|---|
hostname | 为 TCP 连接连接所需的主机名或 IP。默认值为 null,即任何本地 IP 地址 | 字符串 | |
port | TCP 连接所需的端口号 | int |
225.1.2. 查询参数(27 参数):
名称 | 描述 | 默认 | 类型 |
---|---|---|---|
autoAck (common) | 启用/禁用 MLLP Acknowledgement MLLP Consumers 的自动生成 | true | 布尔值 |
bufferWrites (common) | 在写入套接字前,弃用了 HL7 有效负载的 Enable/Disable the buffering。 | false | 布尔值 |
hl7Headers (通用) | 仅在 HL7 Message MLLP Consumers 中自动生成消息标头 | true | 布尔值 |
requireEndOfData (common) | 启用/禁用对 MLLP 标准的严格合规性。MLLP 标准指定 START_OF_BLOCKhl7 有效负载END_OF_BLOCKEND_OF_DATA,但有些系统不会发送最终的 END_OF_DATA 字节。此设置控制最终 END_OF_DATA 字节是否是必需的。 | true | 布尔值 |
stringPayload (common) | 启用/禁用将有效负载转换为字符串。如果启用,则从外部系统接收的 HL7 Payloads 将验证转换为 String。如果设置了 charsetName 属性,则该字符集将用于转换。如果没有设置 charsetName 属性,则将使用 MSH-18 的值来决定相应的字符集。如果没有设置 MSH-18,则会使用默认的 ISO-8859-1 字符集。 | true | 布尔值 |
validatePayload (common) | 启用/禁用 HL7 Payloads If enabled,则会验证从外部系统接收的 HL7 Payloads 将验证(请参阅 Hl7Util.generateInvalidPayloadExceptionMessage)。如果检测到无效的有效负载,则会抛出 MllpInvalidMessageException(针对使用者)或 MllpInvalidAcknowledgementException。 | false | 布尔值 |
bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着在消费者尝试接收传入的消息时发生任何异常,或像这样一样处理,由路由 Error Handler 处理的消息和由路由 Error Handler 处理。如果禁用,消费者将使用 org.apache.camel.spi.ExceptionHandler 通过在 WARN 或 ERROR 级别中记录它们来处理异常,并忽略它们。 | true | 布尔值 |
exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | InOut | ExchangePattern |
同步 (高级) | 设置同步处理是否应当严格使用(此组件仅支持同步操作)。 | true | 布尔值 |
backlog (tcp) | 传入连接的最大队列长度(请求连接)设置为 backlog 参数。如果连接在队列已满时到达,连接将被拒绝。 | 5 | 整数 |
lenientBind (tcp) | 仅限 TCP Server - 允许端点在 TCP 服务器套接字绑定前启动。在某些环境中,可能需要允许端点在 TCP 服务器套接字绑定前启动。 | false | 布尔值 |
maxConcurrentConsumers (tcp) | 将允许的最大并发 MLLP Consumer 连接数。如果收到新连接并且已建立最大连接数,则新连接将立即重置。 | 5 | int |
reuseAddress (tcp) | 启用/禁用 SO_REUSEADDR 套接字选项。 | false | 布尔值 |
acceptTimeout (timeout) | 只等待 TCP 连接 TCP 服务器时超时(以毫秒为单位) | 60000 | int |
bindRetryInterval (timeout) | 仅限 TCP 服务器 - 绑定尝试之间要等待的毫秒数 | 5000 | int |
bindTimeout (timeout) | 仅限 TCP 服务器 - 重试绑定到服务器端口的毫秒数 | 30000 | int |
connectTimeout (timeout) | 仅建立 TCP 连接 TCP 客户端的超时(毫秒) | 30000 | int |
idleTimeout (timeout) | 在重置客户端 TCP 连接前允许执行大约闲置时间。null 值或小于零的值将禁用闲置超时。 | 整数 | |
maxReceiveTimeouts (timeout) | 弃用了 在重置 TCP 连接前允许的最大超时数(由 receiveTimeout 指定)。 | 整数 | |
keepAlive (tcp) | 启用/禁用 SO_KEEPALIVE 套接字选项。 | true | 布尔值 |
receiveBufferSize (tcp) | 将 SO_RCVBUF 选项设置为指定的值(以字节为单位) | 8192 | 整数 |
sendBufferSize (tcp) | 将 SO_SNDBUF 选项设置为指定的值(以字节为单位) | 8192 | 整数 |
tcpNoDelay (tcp) | 启用/禁用 TCP_NODELAY 套接字选项。 | true | 布尔值 |
readTimeout (timeout) | 收到 MLLP 帧后使用的 SO_TIMEOUT 值(以毫秒为单位) | 5000 | int |
receiveTimeout (timeout) | 等待 MLLP 帧的开头时使用的 SO_TIMEOUT 值(以毫秒为单位)。 | 15000 | int |
charsetName (codec) | 在交换上设置 CamelCharsetName 属性 | 字符串 |