首页 > 解决方案 > UaSerializationException:请求超过远程最大消息大小:2434140 > 2097152

问题描述

我是菜鸟,尝试使用以下代码进行批量订阅,但是出了点问题,请问如何解决这个问题

    OpcUaSubscriptionManager subscriptionManager = opcUaClient.getSubscriptionManager();
    UaSubscription subscription = subscriptionManager.createSubscription(publishInterval).get();
    List<MonitoredItemCreateRequest> itemsToCreate = new ArrayList<>();
    for (Tag tag : tagList) {
        NodeId nodeId = new NodeId(nameSpace, tag.getPath());
        ReadValueId readValueId = new ReadValueId(nodeId, AttributeId.Value.uid(), null, null);
        MonitoringParameters parameters = new MonitoringParameters(
                subscription.nextClientHandle(),    //
                publishInterval,     // 
                null,       // filter, null means use default
                UInteger.valueOf(queueSize),   // queue size
                true        // discard oldest
        );
        MonitoredItemCreateRequest request = new MonitoredItemCreateRequest(readValueId, 
        MonitoringMode.Reporting, parameters);
        itemsToCreate.add(request);
    }
    BiConsumer<UaMonitoredItem, Integer> consumer =(item, id) -> 
    item.setValueConsumer(this::onSubscriptionValue);
   
    List<UaMonitoredItem> items = subscription.createMonitoredItems(
            TimestampsToReturn.Both,
            itemsToCreate,
            consumer
    ).get();

    for (UaMonitoredItem item : items) {
        if (!item.getStatusCode().isGood()) {
            log.error("failed to create item for nodeId={} (status={})",item.getReadValueId().getNodeId(), item.getStatusCode());
        }
    }

标签: opc-uamilo

解决方案


您要创建多少个项目?

结果消息似乎超出了您要连接的服务器设置的限制。您可能需要分解您的列表并以较小的块创建项目。


推荐阅读