Stream Siddhi流无模式数据

Stream Siddhi流无模式数据,stream,wso2,complex-event-processing,siddhi,wso2sp,Stream,Wso2,Complex Event Processing,Siddhi,Wso2sp,我有一个来自ActiveMQ的源数据,我的问题是这些数据没有固定的结构,因此,当我定义流时,它会抛出一个不兼容的数据类型错误,有没有办法通过某种条件来调整源流 提前谢谢 /* * Origin of data. */ @source(type='jms', @map(type='csv', delimiter=',', fail.on.unknown.attribute='false'), factory.initial='org.apache.activemq.

我有一个来自ActiveMQ的源数据,我的问题是这些数据没有固定的结构,因此,当我定义流时,它会抛出一个不兼容的数据类型错误,有没有办法通过某种条件来调整源流

提前谢谢

/*
* Origin of data.
*/
@source(type='jms',
        @map(type='csv', delimiter=',', fail.on.unknown.attribute='false'),
        factory.initial='org.apache.activemq.jndi.ActiveMQInitialContextFactory',
        provider.url='tcp://127.0.0.1:61616',
        destination='simulatedData',
        connection.factory.type='queue',
        connection.factory.jndi.name='QueueConnectionFactory',
        transport.jms.SubscriptionDurable='true',
        transport.jms.DurableSubscriberClientID='wso2SPclient1')


define stream FileSourceProductionStream(type string, time long, studentId string, fileId string, totalAccesses float); /* totalAccesses : float Incompatible DataType*/
define stream TaskSourceProductionStream(type string, time long, studentId string, taskId string, deadline long); /*deadline: long Incompatible DataType*/

在siddhi中,源流应该具有输入数据的模式。因此,我们不能将无模式数据接收到定义的流中

对于您的场景,一个可能的解决方案是使用所有可能的输入属性定义一个流,并将输入预格式化为JSON[1]、XML[2]或文本[3]格式,这些格式由siddhi map extensions支持,并带有属性名称和值。对于缺少的属性,json/xml/text输入负载中不会有键或标记

然后在源配置中使用@map(fail.on.missing.attributes='false)配置

然后,对于输入有效负载中所有缺少的属性,NULL将被分配给输入流的相应属性

[1]

[2]


[3] 在siddhi中,源流应该具有输入数据的模式。因此,我们不能将无模式数据接收到定义的流中

对于您的场景,一个可能的解决方案是使用所有可能的输入属性定义一个流,并将输入预格式化为JSON[1]、XML[2]或文本[3]格式,这些格式由siddhi map extensions支持,并带有属性名称和值。对于缺少的属性,json/xml/text输入负载中不会有键或标记

然后在源配置中使用@map(fail.on.missing.attributes='false)配置

然后,对于输入有效负载中所有缺少的属性,NULL将被分配给输入流的相应属性

[1]

[2]

[3]