You are viewing the documentation for Blueriq 17. Documentation for other versions is available in our documentation directory.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

For the DCM setup, we use several queues and exchanges. We use dead letter queues to store messages that could not be processed, because an error occurred when processing. The error should be visible in the log file. Messages on these dead letter queues will be automatically retried by the DCM Maintenance Application. If it exceeds the configured amount of retries it should be reviewed manually by a system administrator instead. There is no notification mechanism for dead letter messages, so Blueriq advises to check the dead letter queues periodically.

All names below can be changed if needed however, the 'dlx.' prefix for dead letter exchanges is mandatory and the dead letter exchange name should be the same as its corresponding exchange.

RabbitMQ

Its possible to configure RabbitMQ manually using the following steps:

  1. Create ten exchanges where events will be published on:
    1. Create an exchange where the Case Engine and Runtime will publish DCM events to named dcmEvents. The type of this exchange should be 'fanout'.
    2. Create an exchange where the Case Engine and Runtime will publish dead letter DCM events to named dlx.dcmEvents The type of this exchange should be 'fanout'.
    3. Create an exchange where the Case Engine will publish DCM Lists Service events to named dcmListsEvents. The type of this exchange should be 'fanout'.
    4. Create an exchange where the Case Engine will publish DCM Maintenance events to named dcmMaintenanceEvents. The type of this exchange should be 'fanout'.
    5. Create an exchange where the Case Engine will publish scheduled events to named dcmScheduledEvents. The type of this exchange should be 'fanout'.
    6. Create an exchange where the Case Engine will publish dead letter scheduled events to named dlx.dcmScheduledEvents. The type of this exchange should be 'fanout'.
    7. Create an exchange where the Case Engine will publish task events to named dcmTasksEvents. The type of this exchange should be 'fanout'.
    8. Create an exchange where the Case Engine will publish dead letter task events to named dlx.dcmTasksEvents. The type of this exchange should be 'fanout'.
    9. Create an exchange where the Case Engine and Runtime will publish timeline events to named timelineEvents. The type of this exchange should be 'fanout'.
    10. Create an exchange where the Case Engine and Runtime will publish trace events to named traceEvents. The type of this exchange should be 'fanout'.
  2. Create nine queues where events will be published on:
    1. Create a queue where RabbitMQ will publish failed DCM events to, e.g. dcmEventsDlq
    2. Create a queue for the DCM events on, e.g. dcmEventsQueue. Configure the exchange created in step 1a as the dead letter exchange for this queue. You can do so by setting a x-dead-letter-exchange argument with the exchange name as its value.
    3. Create a queue for the DCM List Service events, e.g. dcmListsServiceEventsQueue.
    4. Create a queue for the DCM Maintenance events, e.g. dcmMaintenanceEventsQueue.
    5. Create a queue where RabbitMQ will publish failed scheduled events on, e.g. dcmScheduledEventsDlq. Configure the exchange created in step 1e as the dead letter exchange for this queue. You can do so by setting a x-dead-letter-exchange argument with the exchange name as its value.
    6. Create a queue where RabbitMQ will publish failed task events on, e.g. dcmTasksEventsDlq. Configure the exchange created in step 1g as the dead letter exchange for this queue. You can do so by setting a x-dead-letter-exchange argument with the exchange name as its value.
    7. Create a queue for the task events, e.g. dcmTasksEventsQueue.
    8. Create a queue for the timeline events, e.g. timelineQueue.
    9. Create a queue for the trace events, e.g. traceQueue.
  3. Bind the queues to their respective exchanges
    1. Bind the queue created in step 2b to the exchange created in step 1a.
    2. Bind the queue created in step 2c to the exchange created in step 1c and the exchange created in step 1e.
    3. Bind the queue created in step 2d to the exchange created in step 1d.
    4. Bind the queue created in step 2d to the exchange created in step 1a.
    5. Bind the queue created in step 2g to the exchange created in step 1h.
    6. Bind the queue created in step 2h to the exchange created in step 1i.
    7. Bind the queue created in step 2j to the exchange created in step 1h.

Application properties

Its necessary to configure the right exchanges and queues in the right application, the following properties can be used.

Note that not all properties have been described. The host, port, virtualHost, username, password etc. are ommited for brevity.

Case Engine

  1. Add the following exchanges and queues to the Case Engine properties Case Engine Configuration (application-case-engine.properties):
    1. blueriq.case.engine.maintenance.rabbitmq.exchangeName=dcmMaintenanceEvents
    2. blueriq.case.engine.rabbitmq.queueNames=dcmEventsQueue
    3. blueriq.case.engine.rabbitmq.exchangeName=dcmEvents
    4. blueriq.case.engine.scheduler.rabbitmq.exchangeName=dcmScheduledEvents
    5. blueriq.process.engine.v2.automatic-task.rabbitmq.exchangeName=dcmTasksEvents
  2. If the Trace publisher is enabled add the the following to the Case Engine properties (application-trace-event-publisher-amqp.properties):
    1. blueriq.trace.event.publisher.channel.amqp.rabbitmq.exchangeName=traceEvents
  3. If the Timeline publisher is enabled add the following to the Case Engine properties (application-timeline-event-publisher-amqp.properties):
    1. blueriq.timeline.event.publisher.amqp.rabbitmq.exchangeName=timelineEvents
  4. For the Case Engine to communicate to the DCM Lists Service add the following to the Case Engine properties (application-dcm-lists-publisher.properties):
    1. blueriq.dcm.lists-publisher.rabbitmq.exchangeName=dcmListsEvents

Runtime

  1. Add the following exchanges and queues to the Runtime properties (application-case-engine-client.properties):
    1. blueriq.dcm.rabbitmq.exchangeName=dcmEvents
    2. blueriq.dcm.rabbitmq.queueNames=dcmTasksEventsQueue
    3. blueriq.process.engine.v2.automatic-task.rabbitmq.exchangeName=dcmTasksEvents
  2. If the Trace publisher is enabled add the the following to the Runtime properties (application-trace-event-publisher-amqp.properties):
    1. blueriq.trace.event.publisher.channel.amqp.rabbitmq.exchangeName=traceEvents
  3. If the Trace SQL Store is enabled add the the following to the Runtime properties (application-trace-sql-store.properties):
    1. blueriq.trace.event.listener.amqp.rabbitmq.queueNames=traceQueue
  4. If the Timeline publisher is enabled add the following to the Runtime properties (application-timeline-event-publisher-amqp.properties):
    1. blueriq.timeline.event.publisher.amqp.rabbitmq.exchangeName=timelineEvents
  5. If the Timeline SQL Store is enabled add the following to the Runtime properties (application-timeline-sql-store.properties):
    1. blueriq.timeline.event.listener.amqp.rabbitmq.queueNames=timelineQueue
  • No labels