You can combine active subscriptions and broadcast data within a DataSource application.
Conversely, you can configure a DataSource application that consumes data to which it has explicitly subscribed to, but can at the same time consume other data that it receives via broadcast messages. To do this, you define data services that specify the name spaces to subscribe to.
Here's a diagram that shows a Liberator handling both active subscriptions (
/FX/MAJOR) and receiving broadcast data (News Headlines):
Making broadcast data available through active subscription
You can also write your DataSource application so that it turns an incoming broadcast-style data feed into an active subscription-based one. You supply the broadcast data to the DataSource API, and the underlying DataSource Library caches the data and then handles active requests (subscriptions) for it that are received from other DataSource applications.
This feature is useful when one Integration Adapter feeds multiple DataSource applications, and each application is only interested in a small subset of the overall data. Here's an example of how it works:
Here the FX Pricing Adapter broadcasts all the price updates for the FX instruments in the /FX/MAJOR category. To simplify the example, we've shown /FX/MAJOR as consisting of just two currency pairs: /FX/EURUSD and /FX/GBPUSD. The DataSource application that subscribes to the broadcast of these currencies is a Transformer, which caches the price updates as they are received.
Two client FX applications subscribe to currency updates; one is only interested in /FX/EURUSD, and the other is only interested in /FX/GBPUSD. They each log on to a different Liberator and each Liberator sends the Transformer an active subscription request for the relevant instrument. Transformer then sends each Liberator updates for the subscribed instrument as the FX Pricing Adapter broadcasts them, and the Liberators pass the updates on to their client applications.