Skip to content

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.