我有以下数据结构
{
metadata: {
eventId:string
eventName: string
ts: date time string
. . .
},
data:{
// complex event payload
}
}
我从消息总线获取这些事件,需要将消息写入具有以下列的关系表中
事件ID | 事件名称 | ts(日期对象) | 有效载荷(clob)
如何在 Spring XD 中实现这些目标?
- 将非顶层元素保存到多列中
- 将 metadata.ts 转换为 DBMS 的日期对象
我在想这样的事情。
jms|jdbc --columns=payload.metadata.eventId,payload.metadata.eventName,someMagicFunction(payload.metadata.ts),payload
但是,它在 HSQLDB 中引发了一些错误。
2016-09-28T07:06:41-0700 WARN JMS Session Delivery Thread - $TMPAPPID$112880967$$SESSION$0:4720332838885165348 listener.SimpleMessageListenerContainer - Execution of JMS message listener failed, and no ErrorHandler has been set.
org.springframework.messaging.MessageHandlingException: error occurred in message handler [org.springframework.integration.jdbc.JdbcMessageHandler#0]; nested ex
ception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [insert into ces_test5 (payload.metadata.eventId, payload
.metadata.eventName, payload
.metadata.ts, payload) values(?, ?, ?)]; nested exception is java.sql.SQLSyntaxErrorException: too many identifier parts: PAYLOAD
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:139) ~[spring-integration-core-4.2.5.RELEASE
.jar:na]
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116) ~[spring-integration-core-4.2.5.RELEA
SE.jar:na]
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:147) ~[spring-integration-core-4.2.5.RELEASE.jar
:na]
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:120) ~[spring-integration-core-4.2.5.RELEASE.jar:n
a]
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) ~[spring-integration-core-4.2.5.RELEA
SE.jar:na]
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:442) ~[spring-integration-core-4.2.5.RELEASE.jar:na]
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:392) ~[spring-integration-core-4.2.5.RELEASE.jar:na]
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115) ~[spring-messaging-4.2.4.RELEASE.jar:4.2.4.RELE
ASE]
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45) ~[spring-messaging-4.2.4.RELEASE.jar:4.2.4.RELEA
#1(将非顶级元素保存到多列中)甚至可能吗?