Skip to content

Route Table

Szymon Pobiega edited this page Jan 11, 2019 · 2 revisions

The messages with send, subscribe and unsubscribe intent are routed using a RouteTable. The route table is a collection of rules that are evaluated in the context of a given incoming message and, if matched, describe the action to be taken with that message. Each RouteTable entry consists of:

  • destination filter
  • outgoing interface
  • designated gateway

The destination filter takes the incoming interface and the destination endpoint/site name extracted from the incoming message and returns bool if that destination matches a given entry.

If the entry matches the destination then the outgoing interface and designated gateway are used to route the message.

Designated gateway

Sometimes the message cannot be routed directly to the destination endpoint -- it has to go through another router. In these cases the route table entry contains the designated gateway property pointing to the next router. The message is routed to that router with the NServiceBus.Bridge.DestinationEndpoint header containing the ultimate destination endpoint.

API

The main API of the RouteTable is the AddRoute method

public void AddRoute(
   Func<string, Destination, bool> destinationFilter, 
   string destinationFilterDescription, 
   string gateway, 
   string iface)

It adds a new entry with given properties. An additional parameter destinationFilterDescription is used for diagnostic purposes. Is is meant to provide a human-readable description of the entry.

A simpler convenience method AddForwardRoute is also available

public static void AddForwardRoute(
   this RouteTable routeTable, 
   string incomingInterface, 
   string outgoingInterface, 
   string gateway = null)

It creates a forward table rule between two interfaces. Because there is no destination filter, this method is only useful when the forwarding between interfaces is defined statically and does not depend on the message content or headers.

Clone this wiki locally