CM4D Results Transport refers to a collection of CM4D services that transfer data from one or more CM4D databases into the Results database. The Results database is then used by web applications, such as CM4D Peruse or third-party BI tools, for reporting and analysis. These services include Results Sender, Results Loader and StreamCacheSmith.
The CM4D Results transport system uses NServiceBus for messaging between applications, databases and services. NServiceBus is a high-performance messaging system that provides the deployment and scaling options needed for large data throughput as well as supporting smaller installations.
For more information on configuration options related to NServiceBus, see the NServiceBus section of Configuring the Results Services.
Results Services Deployment
The Results services are typically installed on the same machine as CM4D Server, but the Results services are a separate installer from CM4D Server to allow one or more of the services to be distributed to additional servers. To support scalability for larger organizations the services can run on a single computer or multiple computers, and multiple instances of each service can be added and distributed throughout your network. The Results services can be deployed as Windows services (default install option) or as docker images.
Only ONE instance of each of the three Results Services is supported per server.
The Results Loader service can work without any connection to the Site database (e.g. in the cloud connected via a RabbitMQ queue). The connection is entered during the installation of the service.
See also, Docker Installations.
Results Services Configuration
The CM4D Results transport system uses NServiceBus for messaging between applications, databases and services. NServiceBus is a high-performance messaging system that provides the deployment and scaling options needed for large data throughput as well as supporting smaller installations. The Results services make use of the .NET 6 configuration concept and is configurable for optimal performance in a distributed system.
Visit the Microsoft webpage for background information on .NET configurations.
AppSettings
The services are primarily configured during the CM4D Results Services installation. Following installation, these settings are also available via the appsettings.json file in the corresponding service directory. The configuration in the file is overwritten by information from other configuration providers that define certain key/value pairs. This is mainly relevant for docker installations and changes to the system post-installation.
Connection Strings
If CM4D is installed on the same machine, the database connections are typically set via the CM4D.4ds file. However, this is not the case for Docker containers where the settings are typically set via environment variables. The Results Loader service can work without any connection to the CM4D Site database (e.g. in the cloud connected via a RabbitMQ queue) if the CM4DDSFilePath parameter it is explicitly set in the appsettings.json or via an environment variable.
Transport Options
The NServiceBus transport is the way the messages are sent from one node to another. The system can be a distributed deployment, such as a local CM4D Site database and a cloud-based Results database. There are multiple transport options available. The transport is configured by selecting the Transport option during the Results service installation. The Results services must be connected to the same database and have the same transport type as the ServiceControl configuration you are using.
Persistence Options
Information about messages might need to be stored to ensure transactional consistency of long-running transactions. The persistency configuration defines where the data is stored. It is recommended to store it in the CM4D Site database, but another database can be configured if necessary. Additional persistency options will be available in future releases.
Logging
Logging of information is important for troubleshooting of services.
Service Monitoring
NServiceBus (used by CM4D Results and EventSmith services) provides powerful error handling and monitoring tools. You need to configure at least one instance of ServiceControl and Auditing and one Monitoring instance for the transport method chosen during the installation of the Results service. If you are using SQL as your Transport method, ServiceControl Manager is required, as it creates the queue tables used by the CM4D services.
- ServiceControl - Collects data from endpoints (CM4D Services); creates SQL queue tables.
- ServicePulse - A web-based application to inspect failed messages and resubmit them and to monitor the availability and performance of endpoints.
- ServiceInsight - Supports auditing of message details but has a major performance impact.
The downloads and installation instructions for the NServiceBus applications can be found on the Particular Software website.
See the topic Service Monitoring for more details.