2016-09-19 46 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