Versions Compared

Key

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

...

Make sure the lists-service is still capable of handling all synchronous requests, since users will be waiting for the results.


Process Outbox and Outbox Poller

Processing outbox can be tuned by increasing/decreasing batchsize, concurrent consumers, async threads, poller concurrency threads and interval. Below there is diagram that shows how whole flow works. 


Image Added

Async threads pool

After saving messages into outbox, process outbox publishers will process messages by removing them from outbox and publishing into other queues. Their number can be configured by updating async threads pool size. This will increase speed of clearing out Outbox

Code Block
blueriq.case.engine.outbox.async.threads.pool.size=5

Outbox Poller

Outbox Poller is also possible to tune by adding extra poller concurrency threads into its publisher. It will split batchsize into smaller parts and will process them in parallel. By default concurrency pollier is disabled

Code Block
blueriq.case.engine.outbox.poller.concurrency.enabled=true
blueriq.case.engine.outbox.poller.concurrency.threads=2

By specifying interval, we can configure time when poller should get messages from outbox and start processing another batch. By default, it's 2 minutes

Code Block
blueriq.case.engine.outbox.poller.interval.minutes=2m

We can also specify batchsize, which is number of messages pulled from outbox into memory. By default it's 10000

Code Block
blueriq.case.engine.outbox.poller.batchsize=10000

Example issues and solutions

Example 1

Problem: Outbox is full, queue is empty

Solution: Increase async threads or poller concurrency threads

Example 2

Problem: Out of memory error

Solution: Decrease batchsize

Example 3

Problem: Messages are processes in queue very slowly

Solution: Increase concurrent consumers

Example 4

Problem: After system was down, outbox is full of messages and they are processed very slowly

Solution: Increase poller concurrency threads, increase batchsize, decrease interval


Customerdata Service

The role of the Customerdata Service is limited to storing and retrieving data. All searches are done by using the DCM-Lists-Service. Therefore, the Cutsomerdata Service does not need much tuning, and can be horizontally scaled when possible. This can be done by adding a new instance, and running all customerdata endpoint through a loadbalancer (configured in the Case-Engine).

...