Common event-based systems relying on the content-based publish/subscribe
paradigm equate properties of messages to
attributes of those messages. In most cases, a subscription language
is used to express ranges of values for those attributes, which
violates object encapsulation:
a subscription pattern
expressed with such a subscription scheme exposes the message's state, and the resulting filter
queries messages by accessing their attributes.
Furthermore, subscription languages can not be extended or customized
by the application developer, they are orthogonal and redundant with the
programming language,
and they are very error prone: syntax
errors violating the subscription grammar are only seized at runtime
when a pattern is parsed, just like syntaxically correct
constraints based on badly written attributes.