Верблюд: Flatpack & агрегатор

Я относительно новичок в Camel и предполагаю, что мою проблему можно решить с помощью комбинации FlatPack и агрегации, но я не вижу, как я могу заставить ее работать без написания большого количества кода.

Он начинается с файла фиксированной ширины с 2 столбцами (на самом деле больше, но только 2 имеют отношение): action_id и organisation_id. Файл содержит пару тысяч строк и может содержать дубликаты.

Нужно 2 вещи:

  1. отфильтровывать строки для определенного action_id (нас интересует только action_id 70)
  2. дедупликация на основе organisation_id (одна и та же организация может отображаться в нескольких строках)

Буду очень признателен, если кто-нибудь найдет решение или сможет направить меня в правильном направлении.

Ура, Том

ОБНОВИТЬ:

Как упоминалось Клаусом Ибсеном, это также обсуждалось и отвечалось на верблюжьих форумах. Решение для меня было это

<bean id="organisationMemoryRepository" 
class="org.apache.camel.processor.idempotent.MemoryIdempotentRepository" />
... 
<route id="process-line">
    <from uri="flatpack:fixed:kbo.pzmap.xml" />
    <convertBodyTo type="java.util.Map"/>
    <filter>
        <ognl>request.body["ACTION"] == "070"</ognl>
        <idempotentConsumer messageIdRepositoryRef="organisationMemoryRepository">
            <ognl>request.body["ORGANISATION"]</ognl>
            <to uri="log:be.roots.organisation?level=INFO" />
        </idempotentConsumer>
    </filter>
</route>

0 ответов

Другие вопросы по тегам