15.5 Builds upon the 15.1 branch and includes many improvements, fixes, and new features. If you are upgrading from a pre-15.1 environment, please have a look at the changes made in 15.1.
In the past few years (2019 onwards), we have seen a push towards cloud computing and automation. Many of the updates in this branch address issues relating to the management of very large instances/clusters. The Integrator framework has evolved from hosting a small number (<10) channels to replacing on-premise Connexion instances with hundreds of channels (and has a significantly re-worked UI).
There are also many improvements which will also benefit smaller Connexion/Integrator deployments. As always, we welcome your feedback on these features and updates.
New: Connexion & Gateway API
We have built a preliminary API for both Connexion and Gateway environments. Currently, these APIs are geared towards the querying and creation of the main components of each environment (Groups, Tabs, Channels, Devices, Remote Agents). We will be evolving these APIs based on feedback.
Since we are actively evolving these APIs, the easiest way to discover what is currently available is to download the sample projects (at the end of the above linked pages) and browse the methods. There are 3 assemblies (with associated nuget packages):
Connexion.Gateway.Api.dll - Core APIs for the Integrator platform.
Connexion.Api.dll - Core APIs for the Connexion platform.
Connexion.Api.Orchestration.dll - Helpers for common tasks on both platforms, as well as the ability to create routes between Connexion and Remote Agents.
New: Batch Processing
The default queue modes process messages one-at-a-time and in the order of receipt. In 15.0, the ‘Multi-threaded’ mode was added to allow parallel processing of messages. This mode exposed the ability to group message pulled from the queue and then process those groups of messages in parallel. For example, X HL7v2 messages could be pulled from the queue, grouped by patient, and then those groups processed in parallel.
While useful, ‘multi-threaded’ mode required a number of conditions to be met and was somewhat cumbersome to implement. We no longer recommend multi-threaded mode for new implementations.
Batch processing uses a new interface and function to allow the processing of a batch of messages. A collection of messages is passed to the device, and the implementer can decide on how best to deal with them. In some cases you may want to pass the entire collection of messages in a single call (for example, a web service that takes an array of messages), or, you may want to process the messages individually in parallel.
Please note that batch mode (threading / asynchronous programming) is an advanced feature that requires care! Read more about batch processing.
Example
A device which has support for Batch processing is the Remote Agent Sender device. This device brokers messages between Connexion and Remote Agents. Initial implementations of this device sent one message-at-a-time and therefore had a maximum processing speed capped by the latency of the connection. Even on fast connections, this capped throughput at around 40 messages per second.
To overcome this limit, a custom batching mechanism was implemented which cached the messages into a local file and then periodically sent that batch of messages. This resulted in a 10x throughput improvement but required a fairly complex caching mechanism.
When operating in batch mode, this device receives a collection of messages off the queue and can instantly send this batch without any custom caching mechanism. This mode is slightly faster (than custom caching) with much lower complexity and latency.
New: Message Tracing
In large/complex deployments of Connexion (often including Remote Agents), it can be challenging to determine the path a message followed from origin to destination. ‘Message Tracing’ has been added to 15.5 to simplify this task.
Changed: Gateway User Interface Hierarchy
Remote agents are now hosting many more channels and performing more functions that the original UI was designed for. This has surfaced some manageability and performance issues we have decided to change the object hierarchy from Group > Tab > Remote Agent > Channel (15.1) to Group > Remote Agent > Tab > Channel (15.5). This hierarchy provides a more manageable and performant experience for remote agents with many channels, although it does take some getting-used-to.
Changed: Bandwidth Usage Improvements
The continued feature enhancements to both Connexion and Remote Integrator have necessitated larger and larger data payloads to be transferred between the UIs and servers. This was highlighted at the beginning of the pandemic as people moved to work-from-home over (often) slow vpns. 15.5 brings a significant improvement in load times and overall speed when running over slower network connections. We now page-in data on-demand (where possible) to get you up-and-running more quickly.
New: Gateway Map Dashboard
todo
Updated: User Dashboard
todo
Updated: Integrator Push Updates
todo
New: Centralized Server Connections
todo
New: Delay Queuing
todo
New: Release Message(s) For Processing
todo
New: Kafka Reader/Writer Devices
todo
New: Globals bulk import/export
todo
New: Gateway Nightly Backup
todo
New: Enterprise Dashboard & Reporting
todo
Updated: Connexion Plugin UI
todo
Updated: Queue Query Timezone Logic
todo
New: Remote Agent MongoDb Error State
todo
New: Channel Settings Device & Message Verification
todo
New: Remote Agent Decommissioning
todo
Updated: Alert/Event Purging
todo
Updated: Database Polling Device Set Seed
todo
Updated: Queue Device ‘Copy to Queue’
todo