Whenever some kind of business event happens in an application--for example, you create a new customer order, you release an item or print a purchase order, or even when you enter or exit a program or a panel--there should be a possibility to send an event to the Event Hub. To accomplish this you need to use some simple publisher Java classes delivered with the Event Hub. The performance penalty when calling the publisher methods is very low, so this can be implemented without affecting performance for the end user.
Applications that need to receive events also need to use some simple subscriber Java classes. Because the Event Hub is metadata driven by subscriptions (given by the subscribers), the application code of the publisher does not need to be modified for every customer case. This supports "mods-free" applications.
Publishers can dynamically connect to the Event Hub. Subscribers can also dynamically connect to the Event Hub. The Event Hub will persist new event data received while the subscriber is down, if set up to do so. You can, for example, restart an application with a subscriber without losing any event data.
You do not set up the Event Hub. Events are published to the Event Hub through a publisher application. These published events are determined by the subscriptions in the subscriber application.