Я пишу простой POC, используя Apache Camel для получения ловушек 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)
, но тот же результат.
Куда я иду не так?