2014-01-13 56 views
0

我們的客戶將HL7消息格式從2.3更改爲2.7,並且我在使用新消息格式時遇到了一些問題。基本上,我們使用mina2協議,以這種方式能夠路由消息:HL7 2.7和Camel mina2

<route> 
<from uri="mina2:tcp://10.124.199.40:2575?sync=true&amp;codec=#hl7codec&amp;minaLogger=true" /> 
[...] 
</route> 

,並取消平鋪消息標準的升級工作得很好。事實上,改變文件格式,從2.3到2.7這是行不通的,我們得到這個調試消息:

2014-01-13 10:15:57,361 DEBUG HL7MLLPDecoder [104] - Start scanning buffer at position 0 
2014-01-13 10:15:57,361 WARN HL7MLLPDecoder [122] - Ignoring unexpected 1st end byte 28. Expected 2nd endpoint 
2014-01-13 10:15:57,361 DEBUG HL7MLLPDecoder [56] - No complete message in this packet 

我們正在使用高致病性禽流感的消息解析器和恐怕應該是這個問題,但是,在這種情況下, ,我期望的是駱駝應該能夠通過mina2發送消息,並且當我們從我們的業務類讀取HL7消息時發現異常。但事實並非如此,似乎mina2無法傳遞消息。

任何線索與此?是否有可能在被mina2解析之前捕獲MLLP消息,以確保我們的客戶以正確的格式發送它?

我也有另外一個問題。我試圖生成一個非常簡單的jUnit類來向String消息發送消息,但我不知道如何實現MLLP消息,我的問題是:它是mina2做的事情(將String消息包裝爲MLLP格式)或者我發送HL7消息之前要做的事情?

感謝, 安德烈

+0

您是否在類路徑上有正確的JAR。 AFAIR hapi har JAR針對存在的不同hl7版本。因此,您可能還需要更新,以使用v2.7 JAR。 –

回答

0

的問題是有關創建,通過mina2聽衆發來的消息MLLP。在駱駝,我定義了這樣的路線:

<route> 
    <from uri="mina2:tcp://localhost:2576?sync=true&amp;codec=#hl7codecDebug&amp;noReplyLogLevel=DEBUG" /> 
    <to uri="file://HL7Messages?fileName=${file:name.noext}&amp;fileExist=Append"/> 
    <log message="MINA2 DEBUG Message received" loggingLevel="INFO" /> 
</route> 

的問題,基本上是在駱駝HL7編解碼器:

<bean id="hl7codec" class="org.apache.camel.component.hl7.HL7MLLPCodec"> 
    <property name="charset" value="UTF-8" /> 
</bean> 

當然,我是不是能夠真正看到消息的內容所以,我只是在HL7MLLPCodec類中添加了一些調試輸出行,以幫助我理解問題所在。

現在將編解碼器從官方apache切換到我的調試版本我能夠在解碼並重定向到下一個路由步驟之前看到發送到mina2的所有字節。

只是爲了回顧一下,(我很肯定,我會在未來的一次又一次重新閱讀這篇文章),這些封裝的HL7消息所需的字節數:

startByte 0x0b The start byte spanning the HL7 payload. 
endByte1 0x1c The first end byte spanning the HL7 payload. 
endByte2 0x0d The 2nd end byte spanning the HL7 payload. 

要啓動駱駝背景下,我用這個:

Main main = new Main(); 
main.setApplicationContext(new FileSystemXmlApplicationContext("src/test/resources/META-INF/spring/LOCALHOST-camel-context.xml")); 
main.setDuration(-1); 

main.run(); 

主要是類的一個實例org.apache.camel.spring.Main