我正在嘗試基于UaMonitoredItem及其setValueConsumer(ValueConsumer valueConsumer)方法撰寫內部應用程式事件日志。是否可以在setValueConsumer(ValueConsumer valueConsumer)方法的“初始化”/“首次使用”之后過濾掉到達UaMonitoredItems的事件,而不是在此期間?在這種情況下,使用ManagedDataItem或ManagedEventItem會是一個好習慣嗎?
代碼例如:
public void subscribeOnComponentsEvent(List list) {
//....
//Created in MonitoringMode.Sampling to avoid race condition
for (UaMonitoredItem item : monitoredItems) {
allMonitoredItems.add(item);
item.setValueConsumer((e, vs) -> {
logger.info("Received from {}", e.getReadValueId().getNodeId());
});
}
}
public void setMonitoringMode(MonitoringMode mode) {
try {
subscription.setMonitoringMode(mode, allMonitoredItems).get();
} catch (InterruptedException | ExecutionException e) {
logger.error(e.getMessage());
}
}
public static void main(String[] args) {
//...
client.subscribeOnComponentsEvent(list);
client.setMonitoringMode(MonitoringMode.Reporting);
}
代碼示例的輸出:
[milo-shared-thread-pool-3] INFO client.Client - Received from NodeId{ns=1, id=state_open}
[milo-shared-thread-pool-3] INFO client.Client - Received from NodeId{ns=1, id=state_closed}
[milo-shared-thread-pool-3] INFO client.Client - Received from NodeId{ns=1, id=state_alarm}
當應用程式啟動時,此代碼會立即啟動,因此,可能已經在日志中的監視器中的資料將被重新寫入日志。
有沒有辦法避免將資料重新寫入日志?
uj5u.com熱心網友回復:
此代碼不會立即啟動或運行,它只會在創建 MonitoredItem 并且服務器發送通知后運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/505367.html
上一篇:zabbix自定義監控行程與日志
下一篇:React:我相信我有一個用于雙異步fetch呼叫的GOTCHA。一旦部分setState呈現,我單擊按鈕我再次單擊,然后呈現
