2016-09-19 157 views
1

我正在尝试构建自定义接收器适配器。它将从CSV文件中读取并将事件推送到流中。 据我所知,我们必须遵循任何WSO2标准格式(TEXT,XML或JSON)将数据推送到流中。WSO2 CEP - 自定义接收器适配器:事件格式

问题是,CSV文件不符合上述任何标准格式。我们必须将csv值转换为自定义适配器中任何支持的格式。 根据我的观察,WSO2 TEXT格式不支持字符串值中的逗号(,)。所以,我决定转换CSV JSON。

我的问题是如下:

  1. 如何产生WSO2 TEXT事件,如果值AVE逗号?
  2. (如果点1是不可能的)在我的自定义适配器MessageType中,如果我只添加TEXT或全部添加3(TEXT,XML,JSON),它就可以正常工作。但是,如果我只添加JSON,我会得到下面的错误。我的目标是仅添加JSON并将所有CSV转换为JSON以避免混淆。

    [2016-09-19 15:38:02,406] ERROR {org.wso2.carbon.event.receiver.core.EventReceiverDeployer} - Error, Event Receiver not deployed and in inactive state, Text Mapping is not supported by event adapter type file

+0

实际上,你可以避开这个转换完全,因为我们可以模拟出CSV数据事件流。请参阅https://docs.wso2.com/display/CEP410/Sending+Multiple+Events+Using+a+File以了解如何找到。 –

回答

0

我刚刚做到了。不是一个优雅的方式。但它对我来说工作得很好。

正如我所提到的,JSON格式对我来说是最灵活的。我正在从文件读取并将每行/事件转换为WSO2 JSON格式。

此选项的问题是,我想限制消息格式只能从管理控制台的JSON(“消息格式”菜单,而创建新的接收器)。如果我只添加JSON [supportInputMessageTypes.add(MessageType.JSON)],它会显示错误,正如我在上面问题#2中提到的那样。

解决方法是,不是从MessageType类中添加静态变量,而是直接使用相应的字符串。所以,现在,我在EventAdapterFactory类方法“getSupportedMessageFormats()”是如下:

@Override public List<String> getSupportedMessageFormats() { List<String> supportInputMessageTypes = new ArrayList<String>(); // just converting the type to string value // to avoid error "Text Mapping is not supported by event adapter type file" String jsonType = MessageType.JSON; supportInputMessageTypes.add(jsonType); //supportInputMessageTypes.add(MessageType.JSON); //supportInputMessageTypes.add(MessageType.XML); //supportInputMessageTypes.add(MessageType.TEXT); return supportInputMessageTypes; }

我的请求,WSO2的团队,请允许JSON格式事件适配器类型的文件。

感谢,奥贝德

0

从CSV文件中读取并推动事件流,你可以使用文件尾适配器。请参阅样本'Receiving Custom RegEx Text Events via File Tail'。此示例包含可用于映射CSV输入的正则表达式模式。

除此之外,如Charini在评论中建议的,您还可以查看event simulator。但是,事件模拟器不是事件接收器 - 意味着它不会实时接收事件,而是会“播放”以前定义的一组事件(在本例中为CSV文件),以模拟事件流。它不会持续监视文件中的新事件。如果要监视文件以查找新事件,请考虑使用文件尾适配器。

+0

嗨Dilini&Charini,谢谢你的回复。我认为事件模拟器不是我正在寻找的解决方案,我无法自动化(如果我错了,请纠正我)。我已经探索了文件尾并建立了一个csv文件接收器重用它。问题是,正如我在问题#2中提到的那样,它向我展示了问题。请问你能否就此提出建议。 – Obaid