[ROOT] / doc / DocFrag / ARCCore.Subscription
Key | Value |
---|---|
Assembly | ARCCore |
DocFragType | Class |
Name | Subscription |
Namespace | ARCCore |
Type | Subscription |
ClassAttribute
Key | Value |
---|---|
AssemblyName | ARCCore |
ClassNamespace | ARCCore |
ClassType | Subscription |
Interfaces | ITypeDescriber; -IEquatable<Subscription>- |
InterfacesDirectlyImplemented | ITypeDescriber; -IEquatable<Subscription>- |
A stream Subscription is the concept of how nodes (see ARNodeType) subscribe to the PropertyStream (either the whole stream or just part of it) in a distributed manner.
This class Subscription describes WHAT data is required from the PropertyStream.
Used in connection with ClientUpdatePosition which describes from WHERE (from WHEN) in the historic PropertyStream data is to be returned.
This class describes a single subscription element. A complete query consists of one or more instances of this class. See IsMatch for how a query is evaluated.
Some examples of subscriptions could be:
1) A Client, for instance ARCAPI, subscribing (towards CoreDB) to those parts of the PropertyStream that it needs for its functioning.
As this client receives the incoming properties (through OutsideLocalReceiver) they would typically be stored in a PRich for immediate in-memory evaluation of incoming queries to the client again.
2) Subscribe to logging properties for setting up of a log-console (see app).
3) Subscribe to whole database or part of database in different manners in order to set up load-balancing, fault-tolerance, caching and similar (see MultipleConnectionUsage and Sharding for more information).
(in other words, synchronizing and coordinating between multiple AgoRapide based nodes, especially between CoreDB nodes.) Note how the subscription instruction itself can very well be sent over the PropertyStream, configuring the different nodes from a central entry point of administration.
See SyntaxHelp.
TODO: Introduce '**' in order to signify any hierarchical level.
TODO: Like +**/Heartbeat/* in order to collect all Heartbeat in the system, regardless of hierarchical level.
See IsMatch (static method) for how a query consisting of multiple instances of Subscription are evaluated.
This class is immutable.
Note that this same 'query language' (multiple instances of Subscription) can very well be used by clients of ARCAPI also.
(but more probably an API client will make GraphQL requests instead).
Note / FAQ about IQueryable<>: May 2020: AgoRapide will probably not support IQueryable because this interface is mostly about avoiding local processing of data. With IQueryable the query will not be executed until it reaches the actual data storage. Since a typical ARNodeType actually has all data present locally, this concept becomes irrelevant.
Generated 2024-11-12 23:41:52.276 UTC