Я настроил компонент sql верблюда для чтения данных из таблицы базы данных. У меня есть параметр onConsume, который работает, когда я читаю одну строку за раз, но не работает, когда я пытаюсь прочитать несколько строк за раз с помощью maxMessagesPerPoll. Вот что я пробовал ...
Работает: когда я читаю по одной строке и обновляю строку с помощью onConsume.
Мой URI конечной точки потребителя выглядит так:
sql:select * from REPORT where IS_VIOLATED != 'N' and TYPE = 'Provisioning'?consumer.delay=1000&consumer.onConsume=update REPORT set IS_VIOLATED = 'N' where REPORT_ID =:#REPORT_ID
Не работает: когда я настроил компонент sql верблюда для чтения настраиваемых строк (с помощью maxMessagesPerPoll). Он читает несколько строк за раз, но onConsume, похоже, не работает. Я попытался сказать верблюду использовать оператор IN и установить значение заголовка (REPORT_ID) с массивом значений для предложения IN.
URI моей конечной точки потребителя теперь выглядит так:
sql:select * from REPORT where IS_VIOLATED != 'N' and TYPE = 'Provisioning'?consumer.delay=1000&maxMessagesPerPoll=3&consumer.useIterator=false&consumer.onConsume=update REPORT set IS_VIOLATED = 'N' where REPORT_ID in(:#REPORT_ID)
Возможно, я здесь что-то делаю не так. Я уже достаточно поискал по этому поводу и нашел связанный post1, post2. Но это не наставляет меня на правильный путь.
Мне нужно иметь возможность пометить все использованные строки как IS_VIOLATED = 'N'.
Спасибо за вашу помощь.