Versions Compared

Key

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

Include Page
_DcmArchitectureBetaLabel
_DcmArchitectureBetaLabel

When the case engine executes a task, such as creating a case, a lot of actions are performed. Records are saved in databases, messages are published to queues. Any of these actions can go wrong, for instance because the database is offline or there is a network error when publishing a message. When something goes wrong, the case engine repeats the task so it can be processed again. This works for changes to databases which are run inside a transaction, which either succeeds or fails completely (either everything is committed to the database successfully or nothing at all). With messages published to a queue, this is a different story. When a message is published to a queue and then something goes wrong, the message will stay on the queue. Then when the action will be repeated, because something went wrong, this will lead to the same message being published to the queue again. When you consider trace events, this would mean that the same event (e.g. case is created) would be sent multiple times and therefore end up in the trace database multiple times. This is obviously not what we want.

...