Adapters (e.g. JCA) provide a standardized approach for connecting to SaaS, applications, queues and file stores.
Data Caching is a capability that enable the storage of data so future requests for that data can be served faster; the data stored in a cache might be the result of an earlier computation, or the duplicate of data stored elsewhere. A cache hit occurs when the requested data can be found in a cache, while a cache miss occurs when it cannot. Cache hits are served by reading data from the cache, which is faster than recomputing a result or reading from a slower data store; thus, the more requests can be served from the cache, the faster the system performs.
Each device goes through a life cycle of managed state transitions (Registered, Activated, Disabled, Decommissioned). The current state a device is in determines its security permissions and the level of participation it’s allowed to have in an IoT Cloud Service network. A device is a physical hardware system with an embedded chip capable of executing logic and has the communication capability to connect, either directly or via another device.
Aggregation allows events to be consolidated. Aggregation may be useful in a number of scenarios including the following:
- Events may be duplicated due to network or application issues. Sometimes the Quality of Service (QoS) requirements may lead to deliberate duplication of events. Heartbeat events are usually repeated periodically. Aggregation allows these events to be aggregated and sent as a master event.
- Some events may be tightly related to other events and in order to be useful, they may need to be combined by adding fields or by arithmetically aggregating. For example, a shipping system effectively combines address change events and order events into request for shipment to a specific address.
The events generated by the producers may not mean much individually until they are correlated with the other events or contextual information. The Infrastructure should have the ability to resolve complex correlations between events that may be causal, temporal or spatial.
Events are sometimes enriched with additional data obtained from other events or from the local data sources. Computations or algorithms may need to be applied to certain fields to enrich the events. For example, an incomplete or short postal address (e.g. 5-digit zip code) in the event may be verified against the postal service database and expanded with the full address and 9-digit zip code.
Event filtering eliminates events that are trivial or irrelevant. The filtering criteria could be based on time factor or event attributes. An example of the former is heartbeat events sampled every minute. Another example is discarding all stock trades with a stock price of $20 or below.
Managed File Transfer
Mediation can be broadly defined as resolving the differences between two or more end-points in order to integrate them seamlessly. Rather than embedding the mediation logic into each of these end-points it is prudent to provide the mediation capability in the infrastructure, which promotes loose coupling.
Some examples of mediation capabilites include:
- Message Exchange Pattern (MEP) Mediation – MEP mediation resolves the difference between the invocation patterns of the consumer and provider. The most common MEP used is the synchronous request/response pattern. Asynchronous one-way, fire-and-forget, asynchronous request/response, and robust one-way are some of the other popular MEPs that should be supported by the infrastructure. A good infrastructure should also be able to mediate different MEPs using sync-to-async or async-to-sync bridging.
- Transport Mediation – Transport mediation allows the consumer to invoke an end-point using a different transport than that supported by the provider. The infrastructure achieves it by translating the transport protocol and transport headers. The set of supported transport protocols is important to consider when selecting the infrastructure for composition.
Messages are sometimes enriched with additional data obtained from other messages or from the local data sources. Computations or algorithms may need to be applied to certain fields to enrich the messages.
Message filtering eliminates messages that are trivial or irrelevant. The filtering criteria could be based on time factor or message attributes.
Message Transformation is the ability to manipulate and transform messages as they travel from consumer to producer, and optionally back to the consumer. These capabilities provide support for such concepts as transformations to and from canonical message formats.
A destination is a type of named resource. It is a repository for messages. Queues and topics are types of destinations to which messages can be sent.
Messages sent to a queue are received by one and only one consumer. A message sent to a queue is kept on the queue until the message is received by a client or until the message expires. This style of messaging, in which every message sent is successfully processed by at most one consumer, is know as point-to-point.
Messages sent to a topic can be received by multiple consumers or none. This style of messaging, in which each message can be processed by any number of consumers (or none at all), is known as publish/subscribe. To receive a message sent to a topic, a consumer that subscribes to the topic (the subscriber) must be connected to the topic when the message is sent by the producer (the publisher). That is, only clients that have a consumer connected to a topic will receive messages sent to that topic. If there are no consumers on the topic, messages sent to the topic will not be received by anyone, unless there are some durable subscriptions on the topic.
A durable subscription, which stores all messages sent to a topic, can be created to ensure that a publish/subscribe application receives all sent messages, even if there is no client currently connected to the topic. For example, if an application goes offline temporarily and has no consumers on the topic, the client will miss any messages sent to the topic. However, if there is a durable subscription, upon restarting the application, the application will be able to receive any messages sent to the topic during the time the application was not running.
Protocol Translation resolves the differences between two or more end-points in order to integrate them seamlessly.
Routing provides the ability to send the client request to the appropriate provider based on some criteria (e.g. business rules, SLAs, service versions, maintenance windows). The routing may even include sending the client request to multiple providers. This capability facilitates location transparency, versioning, scalability, partitioning, request pipelining, SLA management, etc.
Consumers must be able to subscribe to the messages that are of interest. Subscription may include filtering criteria to limit the messages received from a channel. Consumers may also want to receive the messages that were published when they were inactive. This is achieved through Durable Subscription. Durable Subscription is an important capability that enables the consumers to ensure that they don’t miss any important messages.