IPC Publications - Sending and Receiving Messages
Sending and receiving messages using an IPC Publication operates pretty much like using a Network Publication, without the network parts. It's obvious when you say it, but there are no weird gotchas.
There are one or two small differences, which are mentioned below. For everything else, read the pages on sending and receiving for Network Publications and remove:
- the Sender
- the Receiver
- Status Messages
- everything to do with
snd-*
counters - everything to do with
rcv-*
counters
Back Pressure
With Network Publications, the Receiver sends Status Messages to the Sender to give it min(sub-pos)
and a receiver
window length. That is used to set snd-lmt
. If a Subscriber is slow, it limits how much the Sender can send. The
Driver Conductor updates pub-lmt
based on snd-pos
, which links the ability to publish with the ability to send.
A slow Subscriber ultimately causes back-pressure on the publisher.
With IPC Publications, the Sender is not involved. The Driver Conductor can access the counters for both the
IpcPublication and its Subscriptions, as everything is on the same machine, so it sets pub-lmt
to
min(sub-pos) + termWindowLength
.
Cleaning
Cleaning of IPC Publication log buffers is more aggressive, done up to min(sub-pos)
. Network Publications clean
up to snd-pos - termBufferLength
to leave a reasonable amount of data to support retransmit requests.
Network Publications also have an Image log buffer on the receiving machine, which is cleaned independently of the Publication log buffer.