> When MonitoringMode is Reporting, is the changed value be published immediately or by requestedPublishingInterval value? In my testing, I set the interval 1000ms, and the average delay value of receive data is 1009ms.
PublishResponses are only ever returned as often as the publishing interval defined before the subscription. Value changes that occur in between are all collected and sent together.
> How to understand parameters: requestedLifetimeCount/requestedMaxkeepAliveCount/maxNofificationsPerPublish?
These parameters are used to determine how often a keep-alive response is sent when no values are changing and how long until a subscription expires if the client stops sending PublishRequests. More details are available in Part 4 of the spec.
> publishingEnabled If set false, which one to be disabled? OPC server can't publish changed value to OPC client
This enables or disables publishing for the entire subscription. This is the same thing the SetPublishingMode service does.
> priority I think the subscription with higher level will be published preferred.
Priority really only matters when there's not enough PublishRequests for the number of subscriptions and data changes that are happening. You can read more about it in Part 4 as well.