private void onMonitoredValue(List<MonitoredItemNotification> values) {
        long receiveTs = System.currentTimeMillis();
        Metadata responseMetadata = new DefaultMetadata.Builder()
            .put(PlcMetadataKeys.RECEIVE_TIMESTAMP, receiveTs)
            .build();

        List<DataValue> dataValues = new ArrayList<>(values.size());
        Map<String, PlcTag> tagMap = new LinkedHashMap<>();
        for (MonitoredItemNotification value : values) {
            String tagName = tagNames.get((int) value.getClientHandle() - 1);
            tagMap.put(tagName, subscriptionRequest.getTag(tagName).getTag());
            dataValues.add(value.getValue());
        }

        Entry<Map<String, Metadata>, Map<String, PlcResponseItem<PlcValue>>> mappedResponse = plcSubscriber.readResponse(tagMap, dataValues, responseMetadata);
        PlcSubscriptionEvent event = new DefaultPlcSubscriptionEvent(Instant.ofEpochMilli(receiveTs), mappedResponse.getValue(), mappedResponse.getKey());
        consumers.forEach(plcSubscriptionEventConsumer -> plcSubscriptionEventConsumer.accept(event));
    }
Receive the returned values from the OPCUA server and format it so that it can be received by the PLC4X client.

@param values - array of data values to be sent to the client.
plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubscriptionHandle.java