Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

One of the key features of the Case Modelling solution, is that various components are split from the Runtime, so they can be managed separately. This creates the possibility to fine tune different parts of the solutions using smaller building blocks. The components used for user-interactions is limited to the Runtime, all other components are stateless. Since the solution is event based, the queue plays a general role for the components to communicate with each other. In maintaining and tuning the solution, the queue can be a great starting point to check whether components are scaled right for your situation. The most critical Blueriq components concerned with user-interaction and processing operational data are the Runtime, Case Engine, Customerdata Service and DCM Lists Service. This guide will focus mainly on scaling these components.

Table of Contents

Runtime

The Runtime has two main jobs in a DCM solution: User-interaction with user sessions and processing automatic tasks. The second job is an asynchronous process, where the Runtime reads from the queue:

...

For most situations where the system load is limited, it is reasonable to have a single Runtime handle user-interactions and automatic tasks. However, with high load applications, it could make sense to split these responsibilities, making sure they can be scaled accordingly. This can be configured:

Runtime typeConfiguration
User-interaction only
  • Runtime should be added to the loadbalancer, making sure user-interaction can be routed to the Runtime
  • The property blueriq.dcm.execute-automatic-tasks=false in the application-case-engine-client.properties makes sure automatic tasks are not processed by this Runtime instance
Automatic task processing only
  • Runtime should not be added to the loadbalancer, user-interaction is not routed to this Runtime
  • The property blueriq.dcm.execute-automatic-tasks=true in the application-case-engine-client.properties makes sure automatic tasks are processed, possibly together with the concurrency settings described above.

The advantage of separating these responsibilities, could be that the first Runtime could be scaled by measuring the amount of user sessions, and the second by the amount of unacknowledged messages on the queue.

...