根据日志,我设法使用 rest-api 创建了一个事件流定义。
[2012-08-22 08:48:57,287] INFO {org.wso2.carbon.databridge.streamdefn.cassandra.datastore.CassandraConnector} - Saving Stream Definition : StreamDefinition{streamId='labit.stream-0.0.3-67a2ed14-ece6-4d98-a904-0dde7892c3a9', name='labit.stream', version='0.0.3', nickName='null', description='LONG and BigINT Test stream', tags=null, metaData=[Attribute{name='myTimeStamp', type=LONG}, Attribute{name='source', type=STRING}], correlationData=null, payloadData=[Attribute{name='fibonacciNumber', type=INT}]}
但是当我尝试发布一个事件时..
[
{
"payloadData" : [1] ,
"metaData" : [1340279541606, "labittest"]
}
]
..对它使用rest-api,会引发异常。
[2012-08-22 08:51:48,797] ERROR {org.wso2.carbon.databridge.streamdefn.cassandra.subscriber.BAMEventSubscriber} - Error processing event.
java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Long
at org.wso2.carbon.databridge.streamdefn.cassandra.inserter.LongInserter.addDataToBatchInsertion(LongInserter.java:31)
at org.wso2.carbon.databridge.streamdefn.cassandra.datastore.CassandraConnector.prepareDataForInsertion(CassandraConnector.java:690)
at org.wso2.carbon.databridge.streamdefn.cassandra.datastore.CassandraConnector.insertEventList(CassandraConnector.java:489)
at org.wso2.carbon.databridge.streamdefn.cassandra.subscriber.BAMEventSubscriber.receive(BAMEventSubscriber.java:41)
at org.wso2.carbon.databridge.core.internal.queue.QueueWorker.run(QueueWorker.java:64)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
另一方面,我可以将事件从 Java 代码发布到同一个流。
dataPublisher.publish(labitStream, new Object[] { 1340279541606L, "labittest" }, null, new Object[] { 1 });
我使用的 WSO2 BAM2 版本是从 wso2bam-2.0.0-BETA.zip 中提取的版本。
所以问题是:如何使用 rest-api 发布具有 long 类型属性的事件?