I noticed some problems with the ProcessPayload function in SparkplugApplication.cs. When no DeviceDataReceived or NodeDataReceived event handler is attached, the IEnumerable is not evaluated and metrics are not updated.
Also, the metricState is reinitialized each time ProcessPayload is called. Because of this a partial update, of for instance a single metric, removes all other metrics from the state.
I have a pull request ready to fix this.