Слушайте вставки на столе с Camel - PullRequest
0 голосов
/ 18 июня 2020

У меня есть приложение в Java с Spring boot 2, и я хочу прослушивать вставки в таблице, которые были сделаны триггером, я обязательно использую Camel, потому что это легко сделать, но Я не нашел ответа.

Я нашел это, но ссылки не работают.

is-there-any-possible-to-listen-on-an- sql -table-field-with-camel

Обновление и ответ

У меня есть подход, использующий компонент SQL: (Groovy код)

@Component
class PagosRouter extends RouteBuilder {

  @Autowired
  private OracleDataSource mydataSource

  @Override
  void configure() {

    String rowId = 'row-ID'

    from('sql:select * from THE_TABLE where IS_NEW = 1?dataSource=mydataSource')
        // Catch every sigle row  
        .process { exchange ->
          // Set in the header the md5 row
          exchange.in.setHeader(rowId, exchange.in.body.toString().md5())
        }
        // Set a component that filter every rowId, discarting the repeated ones
        .idempotentConsumer( header(rowId), new JdbcMessageIdRepository(mydataSource, 'theTableWatcher') )
        .split(body()).parallelProcessing(true)
        // Process the new rows 
        .process( { exchange ->
          // Do somthing here
        })
  }
}

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Вы не можете слушать на столе. Но у вас может быть компонент camel, который периодически опрашивает (. ie выполняет запрос, например, каждые 5 секунд).

Например, если у вас есть инкрементное целое число в качестве первичного ключа, и запрос будет иметь условие where с идентификатором больше, чем вставки, которые были прочитаны в последний раз.

Или это может зависеть от времени создания записи

https://camel.apache.org/components/latest/sql-component.html

0 голосов
/ 18 июня 2020

Если таблица B создана триггером таблицы A, вы можете построить таблицу C из вставок в таблицу B, используя там триггер. Вам нужно будет опросить таблицу C с уже обработанными строками для выбора и удаления. Похоже, Camel может следить за таблицей C.

...