SQL Matcher¶
SQL LIKE-style pattern matching.
Syntax¶
| Wildcard | Matches | Example | Matches |
|---|---|---|---|
% |
Any number of characters | LOGIN% |
LOGIN, LOGIN_ERROR |
_ |
Exactly one character | USER_ |
USER_A, USER_1 |
Examples¶
Prefix Matching¶
# All login-related events
kete.routes.kafka.event-matchers.login=sql:LOGIN%
# Matches: LOGIN, LOGIN_ERROR, LOGIN_FAILED
# All user admin events
kete.routes.kafka.event-matchers.user=sql:USER%
# Matches: USER_CREATE, USER_UPDATE, USER_DELETE
Suffix Matching¶
# All error events
kete.routes.kafka.event-matchers.errors=sql:%_ERROR
# Matches: LOGIN_ERROR, REGISTER_ERROR, UPDATE_ERROR
# All delete operations
kete.routes.kafka.event-matchers.deletes=sql:%_DELETE
# Matches: USER_DELETE, CLIENT_DELETE, REALM_DELETE
Single Character Matching¶
# Events with single character at end
kete.routes.kafka.event-matchers.match=sql:CODE_
# Matches: CODE_A, CODE_1 (not CODE_AB)
# USER_ followed by exactly 6 characters
kete.routes.kafka.event-matchers.match=sql:USER______
# Matches: USER_CREATE, USER_UPDATE, USER_DELETE
Exclude Patterns¶
# Exclude refresh events (use with ALL mode)
kete.routes.kafka.event-match-mode=all
kete.routes.kafka.event-matchers.all=glob:*
kete.routes.kafka.event-matchers.no-refresh=sql:not:REFRESH%
Configuration Examples¶
Multiple Patterns¶
# Match login OR user events
kete.routes.kafka.event-matchers.login=sql:LOGIN%
kete.routes.kafka.event-matchers.user=sql:USER%
Combining with Other Matchers¶
# Exact match for LOGIN, SQL pattern for USER events
kete.routes.kafka.event-matchers.login=list:LOGIN
kete.routes.kafka.event-matchers.user=sql:USER%
Realm-Specific Filtering¶
# Production realm - only errors
kete.routes.prod.realm-matchers.realm=list:production
kete.routes.prod.event-matchers.errors=sql:%ERROR
# Dev realm - events with UPDATE
kete.routes.dev.realm-matchers.realm=list:development
kete.routes.dev.event-matchers.updates=sql:%UPDATE%
Case Sensitivity¶
All matchers in KETE are case-insensitive:
sql:LOGIN%matchesLOGIN,login,Loginsql:login%matchesLOGIN,login
Escaping Wildcards¶
To match literal % or _ characters:
# Match "USER_100%" literally
sql:USER_100\%
# Match "CODE_1_A" with literal underscores
sql:CODE\_1\_A
Underscore Behavior¶
The _ wildcard behavior differs between matchers:
| Matcher | LOGIN_ERROR pattern |
Matches |
|---|---|---|
| sql | _ is wildcard |
LOGIN1ERROR, LOGINAERROR |
| glob | _ is literal |
LOGIN_ERROR exactly |
For event types with underscores, use glob to treat underscores as literals.