centiservice / mats3

Mats3: Message-based Asynchronous Transactional Staged Stateless Services
https://mats3.io/
Other
63 stars 7 forks source link

Rework interactive/non-interactive consumers a bit: Also use exclusive non-interactive, and increase interactive #74

Closed stolsvik closed 2 years ago

stolsvik commented 2 years ago

Currently the "normal" consumers both consume non-interactive as well as interactive. In addition, 0.5x interactive consumers are created, which exclusively eat interactive messages - by using the selector "SQL-like" syntax of the JMS consumer.

The idea was that there was then really (in a 2-cpu default setting) 6 consumers for interactive, as the 4 non-interactive would also consume these - but that there was also 2 exclusive interactive that would eat interactive only from the queue if the queue started to fill up.

I have now gotten a bad feeling that a "degenerate" situation can occur: The "normal" consumers have been given a bunch of messages, and then a new interactive message appears. If this is round-robin distributed to all consumers, this might be given to that normal consumer even though it already has messages, while the interactive consumer has nothing to do.

I will now introduce exclusive non-interactive, and in an ActiveMQ setting make 2xcpus of those, and then also 2xcpus of exclusive interactive.