Как мне соединить две одинаковые таблицы из разных источников данных с помощью Camel? - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь написать псевдокод, используя Java DSL для объединения двух идентичных таблиц из двух разных баз данных.

Например, у меня есть таблица Person в базах данных MySQL и PostgreSQL.Хотелось бы увидеть объединение всех рядов.Может кто-нибудь дать какие-либо предложения о том, как этого добиться?

Обновление: я попробовал приведенный ниже код в определении маршрута

from(sql:select name, age from person?datasource=xyz).to(direct:foo);
from(sql:select name, age from person?datasource=abc).to(direct:foo);
from(direct:foo).to(stream:out);

Приведенное выше извлекает данные и объединяет их в один канал.Я хотел бы сделать такие операции, как удаление дубликатов, фильтрация строк и т. Д. Там я не был уверен, как это сделать.Может быть, нужен агрегаторный компонент?

1 Ответ

0 голосов
/ 18 сентября 2018

Это кажется достаточно простым - вам просто нужно помнить о двух вещах.

  • У вас есть данные, поступающие из двух мест.
  • Вам нужно хранить данные внаступая друг на друга до , вы можете агрегировать его.

Затем и только тогда вы можете агрегировать их вместе.

ЕслиЯ должен был нанести удар в этом, это было бы началом.Я бы хотел использовать возможность компонента SQL для указания конкретного заголовка, в котором должен храниться результат SQL. Оттуда я считаю, что проще использовать простой процессор после агрегирования для обработкидве записи и выполняйте с ними любую логику.

from("sql:select name, age from person?datasource=xyz&outputHeader=MySqlDataSet&outputType=Person")
    .to("direct:foo");
from("sql:select name, age from person?datasource=abc&outputHeader=PostgresDataSet&outputType=Person")
    .to("direct:foo");

from("direct:foo")
    .aggregate(constant(true), new GroupedExchangeAggregationStrategy())
    .completionFromBatchConsumer()
    .process(exchange -> {
         // now you have control over the exchange which has both exchanges
         // which has both properties you require.
         // manipulate, merge, and dedupe here to your heart's content.
     });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...