Apache Camel:调用 .bean 不在数据库中保存对象
Apache Camel : Call to .bean not saving object in DB
我正在使用 Apache Camel 编写一个简单的 POC 来接收 SMNP 陷阱。我正在尝试获取传入的交换消息,将其转换为 SnmpMessage
,然后创建一个包含 SnmpMessage
中的两个字段的自定义类型。然后我想将这个自定义对象保存到 H2 数据库中。我的 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)
但结果相同。
我哪里错了?
原来我有两个主要问题。首先,我需要设置 out 消息的主体,而不是 in,其次,在调用 bean 方法时,最后的 .log
调用不起作用。所以对 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() + "]")
}
我正在使用 Apache Camel 编写一个简单的 POC 来接收 SMNP 陷阱。我正在尝试获取传入的交换消息,将其转换为 SnmpMessage
,然后创建一个包含 SnmpMessage
中的两个字段的自定义类型。然后我想将这个自定义对象保存到 H2 数据库中。我的 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)
但结果相同。
我哪里错了?
原来我有两个主要问题。首先,我需要设置 out 消息的主体,而不是 in,其次,在调用 bean 方法时,最后的 .log
调用不起作用。所以对 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() + "]")
}