Remedy Email Engine architecture
Remedy Email Engine consists of multiple modules that run in threads. All the modules are designed to be thread safe, and to increase speed and scalability. The following image depicts the Remedy Email Engine architecture.
Remedy Email Engine Architecture
Remedy Email Engine modules
The following are the Remedy Email Engine modules:
Description and purpose
Monitors the mailbox for statistical information such as when the connection dropped and the length of time the connection was down.
Runs in separate threads to maximize speed and reliability.
Parses and executes messages in the message queue.
Primarily responsible for creating an email based on a template and the data it retrieves from Remedy AR System.
Runs as a separate thread, and sends formatted messages to the mail server.
Logs messages, error messages, and warnings to the Remedy AR System Email Errors form or local file.
Synchronizes configuration information for the email engine using the Centralized Configuration of Remedy AR System. Note that BMC supports EmailDaemon.properties file too.
All modules run as separate threads. An incoming mailbox uses two threads to process email in the message queue--the Receiver and Execution modules. An outgoing mailbox uses separate threads running for the Creator and Sender modules to format and send outgoing messages.
You can specify various troubleshooting parameters, for example, the queue size of email messages or how finely you want to log information within a module. For more information, see Debugging options for the Remedy Email Engine and EmailDaemon.properties file.
Threading model for outgoing mailboxes
The Sender and Creator threads for every outgoing mailbox depend upon the value set for the
NumberOfSenderThreads property and the number of configured outgoing mailboxes respectively.
Depending upon the
NumberOfSenderThreads value and the number of configured outgoing mailboxes, a connection pool is created. The Sender thread uses the connections from this connection pool for sending the outgoing messages.
The number of connections for each configured outgoing mailbox depends upon the number of Sender threads.
The following figure explains this concept in detail.
Threading model for multiple outgoing mailboxes
As per the above figure, there are 3 configured outgoing mailboxes and the value of
NumberOfSenderThreads is assumed to be 2. Due to this, 2 Sender threads and a connection pool with 6 connections (2 connections for every mailbox) is created. The Sender threads send the outgoing messages from the common message queue created for the 3 Creator threads by using the connections from this connection pool.