Camel - извлечение записи из базы данных Oracle через компонент JPA и обновление указанной записи в случае исключения

Мы хотим использовать таблицу в качестве виртуальной очереди в нашей базе данных Oracle. Очередь должна обрабатываться с помощью Apache Camel с использованием компонента JPA. Каждая запись содержит имя очереди JMS, в которую необходимо переслать полезную нагрузку. Обработка элемента очереди и пересылка его другому потребителю работает нормально, но я думал о том, что должно произойти, когда очередь, имя которой указано в записи, не существует. Идея состоит в том, что при возникновении ошибки мы обновляем указанную запись, поэтому видим ошибку в базе данных, и эта запись игнорируется для дальнейшей обработки, пока ошибка не будет устранена. Я играл с некоторыми способами обработки исключений, используя spring-dsl и процессор для подготовки тела для jpa-компонента, используемого для обновления записи.

    <route id="db-to-jms">
        <from
            uri="jpa://foo.bar.jpa.QueueMessageOutEntity?delay=1000&amp;maximumResults=20&amp;namedQuery=orderedByPriority" />
        <doTry>
            <process ref="queueMessageOutProcessor" />
            <recipientList>
                <simple>direct:${header.queueName}</simple>
            </recipientList>
            <doCatch>
                <exception>org.apache.camel.component.direct.DirectConsumerNotAvailableException</exception>
                <handled><constant>true</constant></handled>
                <process ref="queueMessageOutErrorHandler" />
                <to uri="jpa://foo.bar.jpa.QueueMessageOutEntity" />
            </doCatch>
        </doTry>
    </route>

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

Благодарю.

0 ответов

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