gpt4 book ai didi

java - Apache Camel : Call to . bean 未将对象保存在数据库中

转载 作者:行者123 更新时间:2023-12-02 09:20:21 26 4
gpt4 key购买 nike

我正在使用 Apache Camel 编写一个简单的 POC 来接收 SMNP 陷阱。我试图获取传入的交换消息,将其转换为 SnmpMessage,然后创建一个自定义类型来保存 SnmpMessage 中的两个字段。然后我想将此自定义对象保存到 H2 DB。我的 SNMP 路由如下所示:

open class SnmpTrapRoute(private val repository: IPduEventRepository) : RouteBuilder() {

@Throws(Exception::class)
override fun configure() {

from("snmp:0.0.0.0:1611?protocol=udp&type=TRAP")
.process { exchange ->
val message = exchange.getIn() as SnmpMessage
val pduEvent = CustomPduEvent(message.snmpMessage.requestID.toLong(), message.snmpMessage.type)
exchange.getIn().setBody(pduEvent, CustomPduEvent::class.java)
}
.bean(repository, "save")
.log("MIH :: DB Entries [" + repository.findAll() + "]")
}
}

但是,.bean 调用似乎并未将对象添加到数据库中。如果我在处理器中包含 repository.save(pduEvent) 并删除对 .bean 的调用,它会很好地添加它。

还尝试设置输出消息正文 exchange.out.setBody(pduEvent, PduEvent::class.java) 但结果相同。

我哪里出错了?

最佳答案

事实证明我有两个主要问题。首先,我需要设置输出消息的正文,而不是输入消息的正文,其次,最后的 .log调用 bean 方法时 call 不起作用。因此,对 bean 方法的调用有效,但日志调用使其看起来不起作用。因此,我从 process 中调用我的记录器。打电话。

    from("snmp:0.0.0.0:1611?protocol=udp&type=TRAP")
.process { exchange ->
val message = exchange.getIn() as SnmpMessage
exchange.out.body = CustomPduEvent(message.snmpMessage.requestID.toLong(), message.snmpMessage.type)
}
.bean(repository, "save")
.process {
logger.debug("MIH :: DB Entries [" + repository.findAll() + "]")
}

关于java - Apache Camel : Call to . bean 未将对象保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58734744/

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