Message-driven Architecture

Message-driven architecture is an integrated system architecture where separate application modules (components) communicate with each other through a message broker (Message Oriented Middleware).

Message-driven architecture involves producers (entities that generate and send messages) and consumers (entities that receive, read, and process messages). A message broker accepts messages from a producer and routes them to message queues. Each message is stored in a queue until the consumer is ready to process it. Messages can be delivered to the consumers asynchronously (based on the pre-defined schedule).
Within the gateway, Apache Camel (a rule-based routing- and mediation middleware) is used as a message broker. It is integrated with Apache ActiveMQ that serves as a transport layer. Note that Apache Camel should be running on both gateway and data filter servers.

The business logic of the system is split into elements called jobs. Jobs always act as consumers, and may also be producers in some specific cases. In the gateway, there are two types of jobs: timers and tasks/queues.

Each job has the following core parameters: priority, number of consumers, status (active or inactive), and a set time of execution in cron format (for timers).

You can keep track of the job queues execution time and statuses on the gateway user interface: Administration => System => Jobs => Job Messages. If the queue failed while processing, you can restart it with the Requeu button.

To activate/deactivate tasks, set or modify cron expressions for timers, define the number of their consumers, or send a message manually, use Administration => System => Jobs => Job Objects form.