2016-09-19 8 views
1

Я пытаюсь создать пользовательский адаптер приемника. Которая будет считываться из CSV-файла и передает события в поток. Насколько я понимаю, мы должны следить за любым стандартным форматом WSO2 (TEXT, XML или JSON), чтобы передавать данные в поток.WSO2 CEP - Пользовательский адаптер приемника: форматы событий

Проблема в том, что файлы CSV не соответствуют ни одному из стандартных форматов, указанных выше. Мы должны преобразовать значения csv в любой поддерживаемый формат в пользовательском адаптере. Согласно моему наблюдению, формат WSO2 TEXT не поддерживает запятую (,) в пределах строкового значения. Итак, я решил конвертировать CSV JSON.

Мои вопросы ниже:

  1. Как генерировать WSO2 TEXT события, если значения пр запятая?
  2. (если пункт 1 невозможен) В моем пользовательском адаптере MessageType, если я добавляю либо только ТЕКСТ, либо все 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, непосредственно использует соответствующую строку. Итак, мой метод «getSupportedMessageFormats()» в EventAdapterFactory класса, как показано ниже:

@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

Привет, Дилини и Харини, спасибо за ваш ответ. Я думаю, что симулятор событий не является решением, которое я ищу, я не могу автоматизировать это (исправьте меня, если я ошибаюсь).Я исследовал файл-хвост и построил ресивер CSV, повторно использующий это. Проблема в том, что она показывает мне проблему, как я упомянул в своем вопросе №2. Пожалуйста, предложите мне это. – Obaid

 Смежные вопросы

  • Нет связанных вопросов^_^