Content filtering sounds cool, how does it work?

Content filtering is a message filtering capability that provides a high degree of selectivity for messages. A subscription in AMPS consists of a topic and an optional content filter. A content filter is an expression that combines an XPath Locator with a SQL-style predicate so that AMPS can evaluate individual elements of the message content to determine if a message matches the subscription. As messages enter AMPS, they get filtered by topic and then the messages are matched against their optional content filters. Content filtering allows an application to be very specific about what content it will receive.

The performance of content filtering is largely dependent on the complexity of the filter, message type, and CPU/memory performance of the host. We have many customers with 100's of clients subscribing with large content filters (>10KB in size with hundreds of predicates) and easily processing 100K messages per second. One of the most expensive filter predicates you can use is a LIKE expression that performs a regular expression. AMPS can evaluate content filters with LIKE expressions looking for a substring (eg: "^.*substring.*$") at more than 2 million executions per second per core on a Sandy Bridge CPU (>64 million executions per second on a host) -- and we're always finding ways to make it faster!

Last updated