[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mllp receiver of HL7.. Sender is sending simultaneous "conversations"

It seems over the years that an understanding existed in client/server HL7 interfaces that one client sends one message at a time to one port.  Any more and you're asking for trouble.  We moved an interface I have referenced here before recently off of our interface engine to a direct point to point with Camel.  What we discovered is that the sending system creates new work instances based on outbound events, and that some of these can occur simultaneously.  mllp and/or the general Camel from/to context does not like this.. I get warnings about the message being rejected due to only having one consumer.. which normally I would agree with how it should work.  The interface engine, however, seems to be able to accommodate this.. all except for overly huge messages.  This interface carries a base64 encoded pdf if one HL7 field that I decode and place on a file system.  Get a 30 or 60 page pdf base64 encoded and you get quite the payload.. thus the need to skip the interface engine, even though it did serialize my traffic for me.

I attempted to not process, but to dump the message into a queue, thinking that the extra "conversation" and subsequent WARN message from Camel about max consumers was from me delaying the ACK while I process.. but later I put it back, since it occured to me that I should not begin receiving another message until I have ACK/NAK'ed the current message... or we've timed out.  Neither was the case.

So my long winded history is to ask.. Can I/Should I attempt to allow multiple consumers, and how I might accomplish this in camel.  This particular situation, unlike normal HL7.. will not have a problem should arrival order of messages not be completely linear.  Each event is completely unrelated to the next, etc.

I attempted to simply replace mllp with netty and mina.. figuring that perhaps those might have better handling for this situation, but neither like the big messages and give me excessive frame errors.

I have, in an additional issue, exceeded my JVM heap size with some big messages.. I'm attempting to handle that on the JVM side but figured I'd mention it to express the massive size of some of these messages.  So if there's an idea of running a "from.. to.. javaq" and process later.. I need to accommodate that in the queue I build as well.

Thanks all!