Publishing interval
The publishing interval is the cyclic rate at which a subscription drains its MonitoredItems' queues into one NotificationMessage. It is a delivery rate, not a sampling rate: it decides how often you are told, while each item's sampling interval decides how often the server looks. Requested in milliseconds per subscription, and revised by the server.
Delivery, not acquisition
Set the publishing interval to what the consumer actually needs - the update rate of a dashboard, the resolution a historian stores, the latency a control loop tolerates. It does not change how often a value is read from the device. If you need 100 ms resolution but only want a message every second, sample at 100 ms, publish at 1000 ms and give the item a queue of at least 10: you get ten timestamped samples in one message.
Every distinct interval costs another subscription
One subscription has one publishing interval, so fifty different rates mean fifty subscriptions, each consuming server resources, outstanding Publish requests and keep-alive traffic. Pick a small ladder of rates and snap every requirement onto it. Setting the publishing interval to 0 asks the server for its fastest supported cycle, which is a legitimate way to avoid proliferating subscriptions when the exact rate does not matter.
The revised value is what runs
The server returns RevisedPublishingInterval, usually rounded to a multiple of its internal base cycle. LifetimeCount and MaxKeepAliveCount are counted in these cycles, so both timers change meaning when the revised interval differs from what you asked for. Derive your watchdogs from the revised value, and re-derive them after any ModifySubscription.
Example
Working the sampling-to-publishing ratio
Requirement: 100 ms resolution for a trend, one message per second on the wire.
SamplingInterval 100 ms (per item)
PublishingInterval 1000 ms (per subscription)
Ratio 1000 / 100 = 10 samples per cycle
QueueSize >= 10 otherwise 9 of every 10 samples are silently dropped
Got it backwards - PublishingInterval 100 ms, SamplingInterval 1000 ms?
You send ten messages a second carrying the same value nine times.
Defined in: Part 4 - Services, CreateSubscription and the Publish service.
Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.