The benefits are reduced dependencies between components and as a result greater flexibility. Elvin takes this simple concept and extends it to provide a routing service which is dynamic, scalable, and applicable for a wide variety of communication needs. Clients establish sessions with an Elvin server process and are then able to send notifications for delivery or register to receive notifications sent by others.
Clients can act as both producers and consumers of information within the same session.
The task of an Elvin server, or router, is to manage client connections and route notifications from producers to consumers. Consumers express their interest in a notification by registering a subscription with the server. This subscription expresses selection criteria in terms of the content of each message. When the server receives a notification, it checks the content of the message against the registered subscriptions and forwards the notification to each client with a match. A single notification can match any number of subscriptions and is delivered to all active clients with a match.