MetaFluent JMS Providers and Dynamic Data

MetaFluent JMS Providers

The MetaFluent architecture includes multiple JMS Providers, each suitable for different types of solutions. Two have been productized so far:

  • MetaFluent Server Provider
    This JMS Provider relies on the MetaFluent JMS Server, a solution enabled by the modular MetaFluent Server Framework. This Provider offers the full range of capabilities provided by the Server, including clustering and load-balancing, multiple Application Contexts and various data adapters, transformation and modeling options. This provides a very thin, zero-configuration library, minimizing the footprint at the application node (desktop).
  • MetaFluent JMS RMDS Provider
    This JMS Provider relies on underlying RMDS APIs to provide an implementation. This Provider offers a relatively straightforward mapping of RMDS functionality to JMS. This is an example of a "wrapper" API, in which the logic required to present RMDS data as JMS messages executes on the application node (e.g., the desktop).

JMS Message Properties

The JMS Specification defines multiple message types. Each message type supports both JMS-defined header properties and also arbitrary application-defined properties. MetaFluent JMS Providers use a small set of application-defined header properties to express an application-level protocol for dynamic data over JMS.

MetaFluent Application-level Protocol Concepts

  • Data Stream - A data stream is the sequence of messages associated with market instrument, or, more broadly, some unit of dynamic data content. A unit of dynamic data content might be the collection of price attributes related to the trading some instrument on a particular exchange, e.g. bid, ask, last etc. So, a unit of content may be primitive market data but also could be more complex including derived data or related reference data. Regardless, the messages for a particular stream have temporal ordering and convey both the data and the state of the unit of content. MetaFluent JMS Providers use a JMS property to correlate the messages for a given data stream. A JMS Topic may deliver data for a single stream of data (single-stream topic) or multiple streams of data (multi-stream topics).
  • Message Types - The messages that comprise a dynamic data stream all have a message type. The message type allows the application to distinguish between initial value messages, status messages and various types of update messages. There are also message types that relate to managing the collection of streams on multi-stream topics.
  • Data State - For applications that use dynamic data it is important that they understand the condition of the data - is it currently valid or might the data be suspect (stale)? MetaFluent JMS Providers monitor the state of each stream and give applications appropriate state indications if and when the state of a stream changes.

The MetaFluent developer documentation provides detailed information about the MetaFluent JMS properties and how to use MetaFluent APIs to publish and subscribe dynamic data.

Functionality of MetaFluent JMS Providers

First, it's important to understand that the MetaFluent JMS Providers are not generic messaging solutions. For example, our modular server framework contains context-aware components designed to deliver very specific functionality. These components in many cases understand which users are logged in to the server, what data those users are consuming, where that data originates and more. Read more about the MetaFluent Server deployment architecture...

  • On-demand publishing - Because the MetaFluent JMS Providers know which users want to subscribe to which data, and because it knows how to get the data, the Provider is able to deliver only those data streams that are specifically requested by client applications. In other words, the Provider knows the full life-cycle of a client subscription.
  • Initial values - Because the MetaFluent JMS Provider knows when clients come and go and when their subscriptions come and go, and also how to get data, it can deliver initial values to new subscribers as necessary.
  • Access control - MetaFluent JMS Providers can interact with underlying sources of data and entitlements mechanisms to ensure that applications subscribe and publish that data to which they are entitled. MetaFluent Providers use status indications to inform applications about entitlements state. For example, because the MetaFluent Server infrastructure knows the identity of subscribers and understands what they need to access or publish, the infrastructure is able to interact with one or more vendor-specific access control systems, such as Thomson Reuters DACS, to perform content-based access control.
  • Data quality indications - The MetaFluent Providers manage the state of each individual data stream, whether in a single or multi-stream topic. MetaFluent JMS Providers monitor underlying data sources and translate their state indications into appropriate messages for delivery to MetaFluent JMS client applications.

Read about how MetaFluent JMS delivers flexible data models and handles naming/symbology issues...

Also, read about how the MetaFluent Excel Add-In, an example of an enterprise-class application, that uses the C version of our JMS API...