Skip to content
Art2link ESB HomeDocumentationBlogContact
Updated May 5, 2026
Patterns/Routing/Message filter

Message filter

Take only the messages you care about and let the rest pass by. A filter is a subscription with a predicate, the cheapest, most common routing decision on the bus.

A send port subscribes with a condition over a promoted variable, type = Invoice, region = EU, amount > 10000. The bus delivers a copy only when the predicate is true; non-matching messages are simply not delivered to this port. They are not consumed or removed, other subscriptions still see them.

A B A Filter type = A Send port sees A, A B ignored (still on bus for others)

A filter routes one stream to one port. When several ports each filter the same published message on different values, you have graduated to a content-based router, the same idea applied across a set of subscriptions.

In Art2link this is one send port with one subscription. Suppose only invoices over 10,000 should reach a manual-review queue: promote Amount on the Invoice message type, then give the review send port a single predicate:

EXPRESSION
{{Message.MessageType}} == "Invoice" && {{Promoted.Invoice.Amount}} > 10000

Invoices that fail the predicate are simply never delivered to this port, they are not consumed, so other subscriptions still see them.

Filter on what you promoted. A predicate can only test a variable that exists. If a value drives routing, promote it; if nothing routes on it, it does not belong in the filter surface.