gpt4 book ai didi

java - Apache Camel SNMP 组件

转载 作者:行者123 更新时间:2023-12-01 18:37:25 24 4
gpt4 key购买 nike

目前我正在开展一个项目,我接收 OPC UA 数据并通过 SNMP 将它们发送到 PRTG 监控系统。我已经创建了 OPC UA 数据点和 SNMP 客户端(具有唯一的 OID)之间的路由。这里的问题是与 PRTG 监控系统的连接。当我启动连接时,我在 SnmpTrapProducer 上收到 NullPointer 异常。看来我无法在 SNMPTrapProducer.java 中创建 PDU 类型的陷阱

我发现在 SnmpTrapProducer.process(Exchange Exchange) 中创建的 PDU 陷阱返回 NullPointerException(您可以在图中看到该类的部分)。我尝试了不同的方法,例如更改消息正文类型或不同的端口以及 IP 地址。但我仍然得到 NullPointerException。

我必须配置什么才能使陷阱不返回 NullPointer 异常?

Image of parts of the code

SnmpTrapProducer.java

...
PDU trap = exchange.getIn().getBody(PDU.class);

trap.setErrorIndex(0);
trap.setErrorStatus(0);
trap.setMaxRepetitions(0);
...

以下代码是Camel Route的配置

from("milo-client:opc.tcp://"
+ OpcConfiguration.getIpAdress() + ":"
+ OpcConfiguration.getPort()
+ "?node=RAW(" + snmpOidDataStructure.getOpcDataStructure().getNodeId() + ")&allowedSecurityPolicies=None")
.to("stream:out")
.to("snmp://10.3.248.12:5700?protocol=udp&type=TRAP&snmpVersion=1&oids=" + snmpOidDataStructure.getOid());

来自 OPC 组件的消息正文如下所示:

{value=Variant{value=[LocalizedText{text=CP, locale=de}, LocalizedText{text=Video, locale=de}, LocalizedText{text=Notfallsäule, locale=de}, LocalizedText{text=CP Notruf 2 [Gleis 2], locale=de}, LocalizedText{text=, locale=de}]}, status=StatusCode{name=Good, value=0x00000000, quality=good}, sourceTime=DateTime{utcTime=131999719975360000, javaDate=Wed Apr 17 12:53:17 CEST 2019}, serverTime=DateTime{utcTime=132164793099138549, javaDate=Fri Oct 25 14:15:09 CEST 2019}}

错误消息:

java.lang.NullPointerException: null
at org.apache.camel.component.snmp.SnmpTrapProducer.process(SnmpTrapProducer.java:112) ~[Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) ~[Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) ~[Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) ~[Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) [Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) [Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97) [Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.apache.camel.component.milo.client.MiloClientConsumer.handleValueUpdate(MiloClientConsumer.java:78) [Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.eclipse.milo.opcua.sdk.client.subscriptions.OpcUaMonitoredItem.lambda$setValueConsumer$0(OpcUaMonitoredItem.java:133) ~[Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.eclipse.milo.opcua.sdk.client.subscriptions.OpcUaMonitoredItem.onValueArrived(OpcUaMonitoredItem.java:191) ~[Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.eclipse.milo.opcua.sdk.client.subscriptions.OpcUaSubscriptionManager.lambda$null$39(OpcUaSubscriptionManager.java:700) ~[Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$PollAndExecute.run(ExecutionQueue.java:107) ~[Schnittstellenadapter-1.0-SNAPSHOT-shaded.jar:1.0-SNAPSHOT]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[na:1.8.0_221]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[na:1.8.0_221]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:1.8.0_221]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:1.8.0_221]
at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_221]

非常感谢任何帮助

最佳答案

SnmpTrapProducer 类抛出 NPE,因为消息正文似乎为空

正如您的图片所示,问题是变量trap 保持null。它应该成为该行上的一个对象。

PDU trap = exchange.getIn().getBody(PDU.class);

该行获取消息正文内容,并希望它成为 org.snmp4j.PDU 的实例。

不幸的是,您没有显示填充消息正文的代码,但我假设消息正文只是空的

在将消息正文传递给 SNMP 组件之前,尝试注销路由中的消息正文

 .log("Message body: ${body}") 

另一个选择是消息正文是 org.snmp4j.PDU 之外的另一种类型,但我认为它会抛出 TypeConversionException

关于java - Apache Camel SNMP 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60007377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com