› Clovertech Forums › Read Only Archives › Cloverleaf › Cloverleaf › cross process communication
I currently have one inbound ADT feed that sends to 14 outbound threads. I am thinking of creating another process for ADT’s to thin out outbound threads as the one inbound thread is getting pounded.
1.)Is this recommended?
2.)Or is better to raw route to another thread from the one inbound ADT thread and have it take some of the workload? And how do you handle acknowledgments on the thread?
thanks,
Gary
Here is what we do:
We have an inbound site that takes in the ADT and distributes it to multiple sites. We have multiple outbound threads that are mlp pdl to localhost some port. We static raw route to the outbound threads. Each of the outbound threads are really pointing to another site where the messages are actually delivered. The inbound thread and the outbound threads are in the same process.
For each outbound thread aove, there is a site where the complement of the outbound thread from above is described as an mlp pdl localhost (same port) inbound thread. Each message is routed to up to 10 outbound threads (we have an 11 thread limit we try to maintain) which are the actual receiving system.
So you can see the ‘distribution’ site can actually end up delivering messages to as many as 100 destinations (the 11 thread limit on the distribution site allows for 10 outbound threads each of which point to a site that can have as many as 10 destination threads) or more. If one makes a site pointed to from the main distribution site a sub-distribution site which points to even more destination sites, the actual limit goes on.
Multiple sites gives us some advantages (there are also some additional considerations – no such thing as a free lunch) not the least of which is we now have our messages spread over multiple recovery/error databases.
You can accomplish something similar inside one site by having a ‘distribution’ process that static raw routes to mlp pdl localhost outbound threads in the same process. Each of these outbound threads then points to an inbound thread in a different process inside the same site. In the process pointed to by an outbound thread there is an mlp pdl localhost thread that then routes to the actual destination threads. You will only have one Recovery/Error database however and there are some other drawbacks.
We try to stay away from inter-process communication here whenever possible – sometimes it is not possible.
email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.
We are moving to an enterprise system which I do have some say so in the design. We have created a “front door” site for the ADT’s coming in. The sole purpose of that site is to route the ADT’s to the multiple sites. For the most part, this is a raw route and any manipulation that is done is that which is global to all messages for all sites. No site specific data manipulation is done there.
When the message gets to the designated site, it is recieved in by the generic “ADT” process. The spider web of a process that has many multiple outbounds from one inbound is done away with. On the ADT process, it routes the message to multiple processes to balance out the load within the site. No data manipulation is done here except that which is global to all messages for all processes.
In each individual process that the message is routed to, the messages are then run through xlates, tcls, or whatever to perform the data manipulation. The message is then sent out to the various recieving systems.
I have included a screen shot of how we do this on the hospital site. It may not be the most perfect design but it works for us.
In particular naming conventions for threads will be very helpfull.
Off the top of my head here are some we use:
ib_ (inbound thread from a foriegn system)
ob_ (outbound thread to a foriegn system)
hs_ (hop send which sends a message via TCP/IP to localhost to another process in the same site)
hr_ (hop receive which receives a message via TCP/IP from localhost from another process in the same site)
js_ (jump send which sends a message via TCP/IP to localhost to another site)
jr_ (jump receive which receives a message via TCP/IP from localhost from another site)
ls_ (leap send which sends a message via TCP/IP to a site on another cloverleaf server)
lr_ (leap received which receives a message via TCP/IP from a site on another cloverleaf server)
mock_ (mock thread that pretends to be a foriegn system during down times)
rs_ (resend thread that resends intercepted messages of a mock thread once ready to come out of down mode)
grab_ (grab messages during down time from either a hs_ or js_ thread)
return_ (return message after down mode is over to either a hr_ of jr_ thread)
Russ Ross
RussRoss318@gmail.com
hs_ (hop send which sends a message via TCP/IP to localhost to another process in the same site)
hr_ (hop receive which receives a message via TCP/IP from localhost from another process in the same site)
Russ Ross
RussRoss318@gmail.com
js_ (jump send which sends a message via TCP/IP to localhost to another site)
jr_ (jump receive which receives a message via TCP/IP from localhost from another site)
By the way don’t worry about the down thread because it is SNA protocol to mainframe SMS/CARE and it cycles with each batch of messges. The jr_iftp_030 thread is opening because it runs once a day to get the scheduling cancellations.
We don’t like routing several inbound threads to one outbound thread but in pharmacy’s case the vendor demands to get everything on one port.
The jr_cs_allergy thread is currently in down mode and that is why it is turned off.
I just showed one jump send site and 2 of it’s jump receive sites thinking that would be enough to get the idea.
Russ Ross
RussRoss318@gmail.com
grab_ (grab messages during down time from either a hs_ or js_ thread)
return_ (return message after down mode is over to either a hr_ of jr_ thread)
Stepping out of the nest towards using multiple sites will put pressure on people’s comfort zone and force them to wave good-bye to their old flat world thinking.
It probably took Jim and I a couple of years to get others to start thinking outside the box but I think the journey has been worth the benifits.
I agree with Jim that to do the discussion right needs to be done face to face with a white board.
I likely will attend the User’s conference along with Jim and loose some golf balls afterwards.
Hint: You could probably get thousands of dollars of consluting help from Jim and myself for a dozen golf balls. Even better if you end up playing golf with the group after the users conference.
Russ Ross
RussRoss318@gmail.com
We are like the other guys and have multiple sites, generally one for each connected application.
We name threads with respect to the site, application and data and use a suffix to determine if the thread is connecting to another Cloverleaf site or an application.
A ‘snd’ or ‘rcv’ thread will communicate with an application and an ‘in’ or ‘out’ thread is a Cloverleaf connection.
We use the tcp_acknak.pdl for the in/out connections as this is fast.
We make extensive use of Unix links to ensure that there is only one copy of the source code.
eg
Process Connection State Proto Status Count Started
top_prod_rp ccm_prod_rp_adt_out up up 0 16/09/08 20:23:06
top_prod_rp cdc_prod_rp_adt_out up up 0 16/09/08 20:23:04
top_prod_rp cdr_prod_rp_adt_out up up 0 16/09/08 20:23:02
top_prod_rp cwb_prod_rp_adt_out up up 0 16/09/08 20:23:05
top_prod_rp eds_prod_rp_adt_out up up 0 16/09/08 20:23:05
top_prod_rp har_prod_rp_adt_out up up 0 16/09/08 20:23:06
top_prod_rp ris_prod_rp_adt_out up up 0 16/09/08 20:23:03
top_prod_rp sol_prod_rp_adt_out up up 0 16/09/08 20:23:05
top_prod_rp sud_prod_rp_adt_out up up 0 16/09/08 20:23:03
top_prod_rp top_prod_ih_adt_kil up up 0 16/09/08 20:23:03
top_prod_rp top_prod_rp_adt_rcv up up 0 16/09/08 20:23:04
top_prod_rp top_prod_rp_adt_snd up up 0 16/09/08 20:23:04
Process Connection State Proto Status Count Started
ccm_prod_ih anp_prod_ih_lab_in up up 0 19/08/08 21:13:31
ccm_prod_ih ccm_prod_ih_ack_rcv up up 0 19/08/08 21:34:18
ccm_prod_ih ccm_prod_ih_adt_snd up up 0 19/08/08 21:13:34
ccm_prod_ih ccm_prod_ih_lab_smt up up 0 19/08/08 21:13:05
ccm_prod_ih ccm_prod_ih_lab_snd up up 0 19/08/08 21:12:03
ccm_prod_ih ccm_prod_ih_ord_rcv up up 0 15/09/08 15:10:17
ccm_prod_ih ris_prod_ih_lab_in up up 0 02/09/08 10:26:19
ccm_prod_ih sud_prod_ih_lab_in up up 0 19/08/08 21:12:55
ccm_prod_ih sud_prod_ih_ord_out up up 0 19/08/08 21:13:17
ccm_prod_ih top_prod_ak_adt_in up up 0 02/09/08 10:25:23
ccm_prod_ih top_prod_bl_adt_in up up 0 02/09/08 10:25:25
ccm_prod_ih top_prod_fh_adt_in up up 0 02/09/08 10:25:27
ccm_prod_ih top_prod_ke_adt_in up up 0 02/09/08 10:25:29
ccm_prod_ih top_prod_km_adt_in up up 0 02/09/08 10:25:31
ccm_prod_ih top_prod_os_adt_in up up 0 02/09/08 10:25:36
ccm_prod_ih top_prod_pm_adt_in up up 0 02/09/08 10:25:38
ccm_prod_ih top_prod_qe_adt_in up up 0 02/09/08 10:25:40
ccm_prod_ih top_prod_rk_adt_in up up 0 02/09/08 10:25:42
ccm_prod_ih top_prod_rp_adt_in up up 0 02/09/08 10:25:44
ccm_prod_ih top_prod_sw_adt_in up up 0 02/09/08 10:25:46
I wish I could attend the user conference, but $$ is tight
So, what kind of golf balls do you lilke 8)
Everything I hit is pre-owned.
Many times I don’t really keep score and just track how many golf balls I loose to measure my performance.
Most of my golf history is loose a ball every other hole but this year I’m getting to the point of enjoyment and loose about 3 balls per round.
I did make history this year by playing my one and only round of golf without loosing a ball.
My mom decided to reward that performance and bought me some new Titlest pro-v golf balls at $4+change each.
I’m to nervous to hit them at that price and kept waiting until I was having a good day to try one.
When I was having a good golf day and decided to try one of those new golf balls, I discovered I had protected them so well I couldn’t find any of them anymore.
So you see I can even loose a golf ball without even hitting it.
I’m starting to wonder if golf balls have an experation date on them that casues them to vanish after a certain date.
Russ Ross
RussRoss318@gmail.com
As for Russ and his scores vs losing golf balls…I’ve played with Ross once and it doesn’t matter if he is keeping score or tracking the number of lost balls, the number will still be the same…and it is probably 3 digits!!! KIDDING WITH YA RUSS!!!!
Rob Abbott
Cloverleaf Emeritus
Zuyderland Medisch Centrum; Heerlen/Sittard; The Netherlands
I did try the multiserver but I must have configured it wrong because all the threads said they were up but the messages queued up on the threads sending ob to localhost.
The 4 into 1 is the way I had it set up originally, but I am trying to avoid that cross-process communication.
Right now I have two threads medq_3mcs and gecvis_3mcs going localhost to 3mcsportal.
the status window for 3mcsportal says Error Msg: CLIENTS:3 and the
the other two are collecting messsages in the pending status and keep resending them.
3mcsportal is reporting that the messages failed, but the routes and xlates are working (the outbounds – 3mcsxmlo and 3mcsdoco – put files out the disk using fileset local)
3mcsportal is set up with pdl-tcpip with an inbound proc of raw_hl7_ack.
Sounds like I need to do something to make it stop resending.
John Mercogliano
Sentara Healthcare
Hampton Roads, VA
Thank you guys for your time and help!
After my last post, I found
I downloaded hl7Raw_ack.tcl from the TCL Library and it resolved my issue.
I tried a couple times to post this information to this thread, but it didn’t show up. Maybe there’s some site control function that keeps one user from creating multiple sequential posts.