org.omg.CosNotification
Interface EventReliability
public
interface
EventReliability
There are a variety of delivery policies known in distributed systems, such as best-effort,
at-least-once, at-most-once, and exactly-once. However most of these only
make sense in a point-to-point, request-reply communication model. The Notification
Service is by definition a point-to-multipoint delivery mechanism with no explicit
reply mechanism.
The Notification Service treats the reliability of specific events, and the reliability of
the connections which provide a transport for events between clients of the notification
channel and the channel, as separate issues, and thus defines two separate QoS
properties to represent them: EventReliability and ConnectionReliability. Each of these
properties can take on one of two possible numeric constant values: BestEffort or
Persistent. The meanings associated with the settings of these properties are inter-related,
and are thus defined together below.
EventReliability=BestEffort & ConnectionReliability=BestEffort: No specific delivery
guarantees are made. In the presence of failures, the event may or may not be received
by each of the consumers, and a given consumer may receive the same event multiple
times.
EventReliability=BestEffort & ConnectionReliability=Persistent: The notification
channel will maintain all information about its connected clients persistently, implying
that connections will not be lost (logically) upon failure of the process within which
the notification channel is executing. Any clients which connect to the channel using
persistent object references may fail, but unless these object references raise an
OBJECT_NOT_EXIST exception, the channel will continue to retry using them.
Clients which then re-instantiate objects with these references will (logically)
reconnect to their associated proxies. The channel will not, however, store any
buffered events persistently. The implication of this combination is that upon restart
from a failure of the notification channel server process, the channel will automatically
re-establish connections to each of its clients, but will not attempt to retransmit any
events that had been buffered at the time the failure occurred.
EventReliability=Persistent & ConnectionRelability=BestEffort: This combination has
no meaning and need not be supported by a conformant Notification Service
implementation.
EventReliability=Persisent & ConnectionReliability=Persistent: Each event is
guaranteed to be delivered to all consumers registered to receive it at the time the event
was delivered to the channel, within expiry limits. If the connection between the
channel and a consumer is lost for any reason, the channel will persistently store any
events destined for that consumer until either each event times out due to expiry limits,
or the consumer once again becomes available and the channel is subsequently able to
deliver the events to all registered consumers. In addition, upon restart from a failure
the notification channel will automatically re-establish connections to all clients that
were connected to it at the time the failure occurred.
Note that the QoS properties related to reliability can be set at the channel, group, and
proxy levels, but not on an individual event basis. A component at a lower level in the
hierarchy may only override either property related to reliability by a value that
represents the same or a lower reliability level. For example, it is not possible (or
meaningful) to set EventReliability=Persistent at the group admin level, if at the
channel level EventReliability has been set to BestEffort.
public static final String value
Constant value