Conditional Events - how do they work under the hood?

I have recently become aware of some limitations surrounding the use of Messages, so I’m investigating the use of Conditional Events instead.

One of the limitations of Messages that I’ve found is that they seem to block a thread whilst waiting to receive the message - this limits the number of Messages we can have waiting at one time per Process Engine instance.

My question therefore is: how do Conditional Events work?

  • Are they polling the database, waiting for the event and therefore using up resources?
  • Or are they instead triggered by some part of the Process Engine whenever a variable is created / updated etc?

Receive messages do not block any threads. Why do you think they do? How did you check that?

Hi,

Thank you for your reply.

I’ve got a rather large process that has multiple Message Intermediate Catch Events. When I start 800 of these processes and they are all waiting for a message, any other activities that rely on the Job Executor don’t seem to be triggered (IE, Timers).

If I clear down the database and only run 1 of the processes, everything works as expected.

This led me to the conclusion that Message Intermediate Catch Events are somehow blocking the Job Executor.