Article
Oliver Wilms · Jul 27 2m read

IRIS Interoperability Message Bank

I heard about Message Bank when we started redesigning a Health Connect production to run in containers in the cloud. Since there will be multiple IRIS containers, we were directed to utilize Message Bank as one place to view messages and logs from all containers.

 

How does Message Bank work?

 

I added Message Bank operation to our Interoperability Production. It automatically sends messages and event logs to the Message Bank.

 

Resending Messages

 

The Message Bank provides an interface for portal user to resend messages from the Message Bank portal. I thought it would be even better if we could have the Message Bank automatically resend messages as needed. I wrote code to look for messages which did not attain Complete status within predefined time limit and resend them.

 

Challenges

 

We run our IRIS containers as AWS Elastic Container Service Fargate tasks. Fargate has the benefit that we do not need to configure or maintain servers to run our containers on. Each time a container starts, it starts with a new IP address. When the Message Bank container starts with a new IP address, we needed to update the configuration of Message Bank operation in our application containers.

 

Solution

 

I added ZSTU routine on Message Bank container. It writes a file on Elastic File System, where application containers can read Message Bank IP address and configure Message Bank operation settings when Production starts.

 

Errors

 

We observed errors when a container was shut down before it sent any message to the Message Bank. Our Production sends logs to the Message Bank at start up and we got ID not unique errors when another container started with the same IP address as the container that sent logs but no messages.

 

Resolution

 

The code to resolve Message Bank errors can be seen here:

messagebank/TCPService.cls at master · oliverwilms/messagebank · GitHub
 

60
1 0 1 113
Log in or sign up to continue

I did look for some time allready for something to touch.