Say() can not say two or more phrases

Your approach appears to be similar to Design Pattern: Gate Keeper. For those using Scripted Automation, I’ve submitted a version of this DP as a library module in the Helper Library.

I’m very happy to see you are using a ConcurrelyLinkedQueue instead of a ReentrantLock or some other less safe (for Rules DSL) approach.