I have set up an LLP Listener channel who's sole purpose in life is to embed the incoming HL7 into an XML document and send the ACK back to the sender.
There are 2 channels attached. In one instance, I have "Keep connection open" checked (kco_checked.txt) and in the other I do not (kco_notchecked.txt).
Scenario #1: When I send the attached message (testmessage.txt) with "Keep connection open" checked, the ACK is returned and no errors occur, but my CPU goes through the roof by about the 3rd message (cpu_usage.jpg).
Scenario #2: When I send the attached message (testmessage.txt) with "Keep connection open" NOT checked, the ACK is returned and the following error occurs, but my CPU is fine.
My theory is that since the message is being broken up before it's sent across the wire (this was verified via wireshark), mirth is looking at it as 2 separate messages when the connection is not kept open. This causes the second message to begin at some arbitrary point in the message, which will not result in a good ACK.
Any thoughts on how I can process this message with the ACK working, without the CPU drainage, and without the HL7Exception?
keepconnopen.gz (33881 bytes)
There are 2 channels attached. In one instance, I have "Keep connection open" checked (kco_checked.txt) and in the other I do not (kco_notchecked.txt).
Scenario #1: When I send the attached message (testmessage.txt) with "Keep connection open" checked, the ACK is returned and no errors occur, but my CPU goes through the roof by about the 3rd message (cpu_usage.jpg).
Scenario #2: When I send the attached message (testmessage.txt) with "Keep connection open" NOT checked, the ACK is returned and the following error occurs, but my CPU is fine.
ERROR 2007-05-11 15:35:03,941 [063de51d-71d0-4346-b13f-55f64c9427a5_source_connector._mllpEndpoint#-579888487.receiver.2] org.mule.impl.DefaultComponentExceptionStrategy: Caught exception in Exception Strategy for: 063de51d-71d0-4346-b13f-55f64c9427a5: ca.uhn.hl7v2.HL7Exception: Couldn't find MSH segment in message: ST|LYMPH %^LYMPH %^L|1|11.0|%|20-50|L||A^S|F|||200705100700|^^OBX|21|ST|BASO #^ABSOLUTE #BASOPHILS AUTOMATED^L|1|0.03|K/uL|0.0-0.1|N||A^S|F|||200705100700|^^||ML|
ca.uhn.hl7v2.HL7Exception: Couldn't find MSH segment in message: ST|LYMPH %^LYMPH %^L|1|11.0|%|OBX|21|ST|BASO #^ABSOLUTE #BASOPHILS AUTOMATED^L|1|0.03|K/uL|0.0-0.1|N||A^S|F|||200705100700|^^||ML|
at ca.uhn.hl7v2.parser.PipeParser.getCriticalResponse Data(PipeParser.java:617)
at com.webreach.mirth.util.ACKGenerator.generateAckRe sponse(ACKGenerator.java:37)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.generateACK(MllpMessageR eceiver.java:451)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.processData(MllpMessageR eceiver.java:360)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.run(MllpMessageReceiver. java:278)
at org.mule.impl.work.WorkerContext.run(WorkerContext .java:290)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.runTask(ThreadPoolExecutor. java:650)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.run(ThreadPoolExecutor.java :675)
at java.lang.Thread.run(Thread.java:619)
ca.uhn.hl7v2.HL7Exception: Couldn't find MSH segment in message: ST|LYMPH %^LYMPH %^L|1|11.0|%|OBX|21|ST|BASO #^ABSOLUTE #BASOPHILS AUTOMATED^L|1|0.03|K/uL|0.0-0.1|N||A^S|F|||200705100700|^^||ML|
at ca.uhn.hl7v2.parser.PipeParser.getCriticalResponse Data(PipeParser.java:617)
at com.webreach.mirth.util.ACKGenerator.generateAckRe sponse(ACKGenerator.java:37)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.generateACK(MllpMessageR eceiver.java:451)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.processData(MllpMessageR eceiver.java:360)
at com.webreach.mirth.server.mule.providers.mllp.Mllp MessageReceiver$TcpWorker.run(MllpMessageReceiver. java:278)
at org.mule.impl.work.WorkerContext.run(WorkerContext .java:290)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.runTask(ThreadPoolExecutor. java:650)
at edu.emory.mathcs.backport.java.util.concurrent.Thr eadPoolExecutor$Worker.run(ThreadPoolExecutor.java :675)
at java.lang.Thread.run(Thread.java:619)
Any thoughts on how I can process this message with the ACK working, without the CPU drainage, and without the HL7Exception?
keepconnopen.gz (33881 bytes)
Comment