A Delivery Controller is a receiver-side object created for each source identified by the receiver through topic resolution. A delivery controller performs the following.
Delivers messages to multiple receivers subscribed to the same topic.
Orders received topic messages if ordered_delivery is set to 1 (default). This option applies to LBT-RU and LBT-RM transports.
Determines unrecoverable loss and burst loss events for the receiver's topic over LBT-RU and LBT-RM transports.
Unlike the loss depicted in LBT-RM Datagram Loss Resulting in Unrecovered Message Loss which is due to the inability of the transport or network to perform message retransmission, Figure 4-13 demonstrates how a receiver's Delivery Controller detects the loss of a topic message and notifies the receiving application. The TSNI messages contain the sequence number of the last message sent by the source.
The Delivery Controller detects burst loss by comparing the sequence numbers of the last two messages received. If the resulting gap in sequence numbers equals or exceeds the delivery_control_maximum_burst_loss, the delivery controller sends LBM_MSG_BURST_LOSS to the application.
The size of the hash table that the receiver uses to store channel subscriptions. A larger table means more channels can be stored more efficiently, but takes up more memory. A smaller table uses less memory, but costs more CPU time for large numbers of channel subscriptions.
This controls the interval between mandatory topic loss checks for a receiver. A value of 0 turns this loss check off.
For LBT-RM and other datagram-based transport sessions only. This controls the size of the hash table index used for storing unrecoverable loss state on a per source per topic basis. Larger values mean larger hash tables and probably better CPU usage under loss scenarios at the cost of more memory per source per topic. Smaller values mean smaller hash tables and probably worse CPU usage under loss scenarios but with less memory usage. The value used should be a prime number for efficiency.
This controls the maximum tolerable burst loss before a burst loss message is delivered to the application. A burst loss less than or equal to this size is treated normally. Larger burst loss is treated as unrecoverable immediately.
The maximum total buffered map entries (unrecoverable loss messages as well as data) that all topics can buffer. When this is exceeded, unrecoverable loss is signaled for data until the total buffered subsides. A value of 0 implies no maximum value setting and allows any amount required to be buffered.
For LBT-RM and other datagram-based transport sessions only. This controls the size of the hash table index used for storing buffered data on a per source per topic basis when ordered delivery is used. Larger values mean larger hash tables and probably better CPU usage under loss scenarios at the cost of more memory per source per topic. Smaller values mean smaller hash tables and probably worse CPU usage under loss scenarios but with less memory usage. The value used should be a prime number for efficiency.
This controls the interval between mandatory loss checks for a Multicast Immediate Messaging (MIM) transport session. A value of 0 turns this loss check off.
Behavior desired when a message without channel information (i.e. a standard UM message) is received by UM.
String value | Integer value | Description |
---|---|---|
deliver |
LBM_RCV_TOPIC_ATTR_CHANNEL_BEHAVIOR_DELIVER_MSGS |
Messages sent without channel information will be delivered to the callback specified upon receiver creation. Default for all. |
discard |
LBM_RCV_TOPIC_ATTR_CHANNEL_BEHAVIOR_DISCARD_MSGS |
Messages sent without channel information will be discarded. |
Callback functions (and associated client data pointer) that are called when a receiver creates or deletes a delivery controller associated with a source. For the creation function, the application has the ability to set the source client data pointer to be used in each message received from the source. This callback is called directly in line and does not use the event queue. Therefore the callback function used should not block or it will block the context thread processing. A value of NULL for the callback turns off the callback being called.
Behavior desired when a message with channel information for a channel not in the receiver's set of subscribed channels is received by UM.
String value | Integer value | Description |
---|---|---|
deliver |
LBM_RCV_TOPIC_ATTR_CHANNEL_BEHAVIOR_DELIVER_MSGS |
Messages sent with channel information for a channel not in the receiver's set of subscribed channels will be delivered to the callback specified upon receiver creation. Default for all. |
discard |
LBM_RCV_TOPIC_ATTR_CHANNEL_BEHAVIOR_DISCARD_MSGS |
Messages sent with channel information for a channel not in the receiver's set of subscribed channels will be discarded. |
Copyright (c) 2004 - 2014 Informatica Corporation. All rights reserved.