Question on "how best to accomplish"

Clovertech Forums Read Only Archives Cloverleaf Cloverleaf Question on "how best to accomplish"

  • Creator
    Topic
  • #55167
    Chris Plummer
    Participant

      I have a process that is receiving adt messages from Mckesson, lets call it adt_in

      I also have another process that is receiving order messages from McKesson, lets call it orm_in

      I have a vendor that want’s both messages in one thread, what is the preferred way of handling this? The engine I have inherited seems to handle this scenario two different ways. The first way is that they have this vendor thread with routes from both processes. I seem to recall reading that there is a significant performance hit with a thread receiving messages from a process outside of it’s “primary cluster”.

      The other way that it seems to be handled is that the vendor thread is routed to one process and the other process connects to the vendor thread via an interface jump or hop.

      Is this second way preferred, is there a similar performance hit?

      I’ve yet to take the advanced class as I wanted to get my hands dirty for about a year before I took that class. I hope the above information makes sense.

      Thanks for any help you can provide.

    Viewing 4 reply threads
    • Author
      Replies
      • #84426
        Robert Kersemakers
        Participant

          Hi Chris,

          We still follow the rule to keep all routing inside one process. We are not a large site, so performance was never an issue.

          So in this case I would jump/hop the route with the least messages to the process where the vendor thread resides.

          Zuyderland Medisch Centrum; Heerlen/Sittard; The Netherlands

        • #84427
          Chris Plummer
          Participant

            Thanks that is what I thought but just wanted to be sure.

          • #84428
            James Cobane
            Participant

              While the rule of thumb is to avoid cross-process routing, sometimes it is just not practical to configure a bunch of additional threads to keep the inbounds/outbounds in the same process.  You incur some overhead in adding additional threads as well.  It just all depends…

              Jim Cobane

              Henry Ford Health

            • #84429

              For high volume interfaces, you should avoid cross-process communication if it all possible. It’s a best practice to do this, but you will not see any performance issues until your volume crosses a threshold, and then you will see bottlenecks. Keep in mind that problems can also occur with volume when resending or turning on long-down interfaces.

              The rule is to always keep inbound and outbound threads and only deviate from this when absolutely necessary.

              And no, I don’t know what the thresholds are. 😀 It depends on many variables.

              -- Max Drown (Infor)

            • #84430
              Charlie Bursell
              Participant

                You have to remember what you are giving up with inter-process routing vs. intra-process routing.  When you route to a thread in the same process you pass a 4-byte memory location for the message.  When you route to a thread in a different process you must pass the entire message.  Since most HL7 messages are relatively small – 200 bytes or less – this is not usually a big problem.  However if dealing with very large messages it could adversely affect throughput.

                I am with Jim.  Sometimes it just makes sense, like routing to several OB threads, ease of maintenance, etc. to put some threads in separate processes.

                There is no one size fits all.  You just have to figure out what is best for your particular implementation.  That’s why you are paid the big bucks  ðŸ˜†

            Viewing 4 reply threads
            • The forum ‘Cloverleaf’ is closed to new topics and replies.