Забелязах следното неочаквано поведение и мога да го възпроизведа с пробата на Spring Integration basic/jdbc
Стартирайте примера за пролетна интеграция basic/jdbc и незабавно се опитайте да намерите име, което не съществува, т.е. стартирайте с помощта на примера за пролетна интеграция basic/jdbc, стартирайте Main.java, въведете 1, за да намерите човек, въведете Марк
Получава се изключение ReplyRequiredException, защото не е намерен ред. Ако променя дефиницията на int-jdbc:outbound-gateway в spring-integration-context.xml, за да използвам requiresReply="false", тогава извикването на findPersonByName блокира, докато int:gateway изтече след конфигурираните 5 секунди.
Това е много типична операция, при която искам да използвам Spring Integration jdbc:outbound-gateway, за да върна списък от 0 или повече елемента. Изглежда, че работи добре за резултати с размери 1 или повече. Въпреки това, нито едно поведение не е желателно, когато са намерени 0 резултата. Не искам изключението, защото понякога това поведение се очаква и аз също не искам да блокирам до изчакване. В случай на изключение, мога да използвам try/catch, но рамката регистрира изключението на ниво WARN и не искам да обработвам очакваното поведение, 0 върнати елементи, с обработка на изключение, try/catch. Има ли начин да конфигурирате потока в Spring Integration sample basic/jdbc да се връща без блокиране или хвърляне на изключение, когато името не е намерено, т.е. просто връща празен списък?