#WSO2 - DAS - 在SQL Server 2008中存储事件

时间:2015-11-09 18:33:57

标签: wso2-das

在我的项目中,我需要收集数据,处理/分析数据并发布。 我正在使用WSO2 DAS 3.0.0。

为了达到这个目的,我遵循了以下步骤: -

  1. 创建事件流(定义属性)。
  2. 创建事件接收器。 (HTTP,SOAP)
  3. 创建事件发布者(在我的sql中存储事件,但在SQL服务器中收到错误,请参阅下文)。
  4. 我的问题如下: -

    1. 还有其他方法可以在数据库中存储持久化事件。我可以使用Main-> stream-> persist事件将事件存储在数据库中。我可以使用它来存储数据库中的事件,或者我需要使用Main-> publishers。选择"输出事件适配器类型" - 用于存储事件的RDBMS?

    2. 我可以使用SQL Server 2008在SQL Server 2008中存储事件吗?将数据存储到SQL Server 2008时,我遇到了以下错误。

    3. 无法执行创建表查询。已有一个名为' tbl_City'在数据库中。因此事件被删除。

      TID [-1234] [DAS] [2015-11-09 12:28:06,265] ERROR {org.wso2.carbon.event.output.adapter.rdbms.RDBMSEventAdapter} - 无法执行创建表查询。已有一个名为' tbl_City'在数据库中。因此事件被删除。 org.wso2.carbon.event.output.adapter.rdbms.RDBMSEventAdapter.createTableIfNotExist(RDBMSEventAdapter.java:416)org.wso2.carbon.event.output.adapter.rdbms.RDBMSEventAdapter.executeProcessActions(RDBMSEventAdapter.java:290)org。 wso2.carbon.event.output.adapter.rdbms.RDBMSEventAdapter.publish(RDBMSEventAdapter.java:134)org.wso2.carbon.event.output.adapter.core.internal.OutputAdapterRuntime.publish(OutputAdapterRuntime.java:62)org。 wso2.carbon.event.output.adapter.core.internal.CarbonOutputEventAdapterService.publish(CarbonOutputEventAdapterService.java:143)org.wso2.carbon.event.publisher.core.internal.EventPublisher.process(EventPublisher.java:361)org。 wso2.carbon.event.publisher.core.internal.EventPublisher.sendEvent(EventPublisher.java:209)org.wso2.carbon.event.publisher.core.internal.EventPublisher.consumeEvent(EventPublisher.java:275)org.wso2。 carbon.event.stream.core.internal.EventJunction.sendEvent(EventJunction.java:142)org.wso2.carbon.event.receiver.core.internal.management.In putEventDispatcher.onEvent(InputEventDispatcher.java:27)org.wso2.carbon.event.receiver.core.internal.EventReceiver.sendEvent(EventReceiver.java:259)org.wso2.carbon.event.receiver.core.internal.EventReceiver。 processTypedEvent(EventReceiver.java:237)org.wso2.carbon.event.receiver.core.internal.EventReceiver $ TypedEventSubscription.onEvent(EventReceiver.java:317)org.wso2.carbon.event.input.adapter.core.internal。 InputAdapterRuntime.onEvent(InputAdapterRuntime.java:110)org.wso2.carbon.event.input.adapter.http.HTTPMessageServlet $ HTTPRequestProcessor.run(HTTPMessageServlet.java:210)java.util.concurrent.Executors $ RunnableAdapter.call(Executors。 java:471)java.util.concurrent.FutureTask.run(FutureTask.java:262)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor。 java:615)java.lang.Thread.run(Thread.java:745)

      请确认。

4 个答案:

答案 0 :(得分:0)

似乎您将事件发布者与数据发布者混为一谈。

事件发布者用于将结果发布到外部系统以采取进一步操作。事件发布者提供从WSO2 DAS向外部系统发送事件通知和警报的功能。

对于您的用例,您需要做什么  do是将数据发布到DAS。有几种方法可以做到这一点。有关更多信息,请查看[1]。

您还可以按照DAS快速入门指南[2]来更好地理解这些概念。

关于使用SQL Server 2008的问题,是DAS支持Microsoft SQL服务器。

[1] https://docs.wso2.com/display/DAS300/Publishing+Data+to+DAS

[2] https://docs.wso2.com/display/DAS300/Quick+Start+Guide

答案 1 :(得分:0)

感谢您的回复。

是的,你是对的。我在事件/数据发布者之间感到困惑。我不想发布我希望它存储在SQL服务器中的事件。

请按照以下方式完成我的系统流程: -

外部系统将数据推送到DAS。我需要将这些数据存储在SQL服务器中,并需要进行处理以进行进一步分析。

我为此做了以下步骤。

  1. 创建的事件流。定义5个属性。 : - 完成
  2. 创建事件接收器。暴露的HTTP端点: - 完成
  3. 我需要将此数据存储到SQL Server 2008中。 - 待定
  4. 我可以将以下样本数据发布到DAS.-

    "<events>
    <event>
        <payloadData>
            <queueName>data3</queueName>
            <agentsOnThreshold>100</agentsOnThreshold>
            <agentsAvailThreshold>45</agentsAvailThreshold>
            <callsWtngThreshold>4</callsWtngThreshold>
            <avgWaitInSecThreshold>100</avgWaitInSecThreshold>
            <oldestCallInSecThreshold>45</oldestCallInSecThreshold>
        </payloadData>
    </event>`enter code here`
    

    &#34;

    所以我的问题是如何将上述数据存储到我在DAS(事件接收器)中收到的SQL服务器中。

答案 2 :(得分:0)

为了保留DAS为特定流接收的数据,您需要为其启用数据持久性。如果你还没有完成,请按照[1]并保留流。

您可以通过使用DAS内置事件模拟功能[2]向DAS发送示例事件来验证DAS数据接收功能。

要确保数据是否在Event Store中保留,请转到Data Exporer [3]并浏览已发布的数据。

[1] https://docs.wso2.com/display/DAS300/Persisting+Data+for+Batch+Analytics

[2] https://docs.wso2.com/display/DAS300/Publishing+Data+Using+Event+Simulation

[3] https://docs.wso2.com/display/DAS300/Data+Explorer

答案 3 :(得分:0)

感谢链接和信息,它对我很有帮助。

我可以将事件保存到SQL Server 2008中。

我只想添加我遵循的步骤: -

  1. 打开\ repository \ conf \ datasources \ master-datasources.xml 更改数据源标记。更改URL,用户名,密码,driveclassname。
  2. 请按照以下链接获取详细步骤: -

    https://docs.wso2.com/display/DAS300/Setting+up+Microsoft+SQL

    1. 打开\ repository \ conf \ datasources \ analytics-datasources.xml 更改配置设置。更改URL,用户名,密码,driveclassname。 e.g。

         "<datasource>
            <name>WSO2_ANALYTICS_FS_DB</name>
            <description>The datasource used for analytics file system</description>
            <definition type="RDBMS">
                <configuration>
      
           

      JDBC:SQLSERVER://本地主机:1433;的databaseName = testDAS                     SA                     ******   driverClassName&GT; com.microsoft.sqlserver.jdbc.SQLServerDriver                     50                     60000                     五                     真正                     选择1                     30000                                         &#34;

    2. 对&#34; WSO2_ANALYTICS_EVENT_STORE_DB&#34;,&#34; WSO2_ANALYTICS_PROCESSED_DATA_STORE_DB&#34;进行类似的更改。

    3. 创建一个事件并检查SQL Server表是否获取捕获。在我的例子中,SQL表创建时使用名称&#34; [ANX ___ 7Lk3JrzI _]&#34;。

    4. 感谢。