A real time message bus written in .Net Core 3.1 running on Linux.
This is work in progress.
- Broker based
- Broadcast feed
- Select feed
- SSL
- Authentication
- Authorization
A broker based message bus acts like a network switch or router. Clients subscribe to data that is published by other clients. All traffic passes through a hub which holds state about the subscriptions. This contrasts with programs like RabbitMQ which has a store and forward paradigm, and Kafka with a horizontally scalable architecture.
A broadcast feed publishes all of its data as soon as it is available. An example of this is the feed from a financial exchange. Typically every data event is published, and it is up to the client to filter out the unwanted information,
In contrast to a broadcast feed, a select feed waits for a client to request the data before it starts to publish it. This presents less network traffic, but provides more complexity in the message bus and publisher.
This message bus supports SSL connections between clients and the server.
Authentication is provided as a pluggable component. Out of the box three methods are supported:
- No authentication
- Password File
- LDAP
SSL connections are recommended when using authentication to prevent password snooping.
Many financial feeds require the distribution of data to be restricted to those who have paid for it. This message bus supports such authorization, such that it will not transmit data to clients that are not entitled to receive it.
On linux you may have to add the following lines to /etc/sysctl.conf
:
fs.inotify.max_user_watches = 524288
fs.inotify.max_user_instances = 524288