Можем ли мы вызвать хранимую процедуру как webhook (просто запустить и завершить) - PullRequest
0 голосов
/ 29 января 2019

Я использую JAVA в качестве внутреннего кода и SQL-сервер в качестве сервера базы данных, и я вызываю хранимую процедуру, и она очень большая, поэтому я разбиваю ее на 3 и вызываю.но я просто хочу вызвать один sp, и он должен продолжить свою задачу, и я должен только проверять каждые 1 минуту или около того, но когда я вызываю sp, мой java ждет, пока sp вернет значение.

если я использую webhook, я могу добиться этого, но я просто хочу использовать хранимую процедуру.

SimpleJdbcCall jdbcCall = new SimpleJdbcCall (Master.getJdbcTemplate) .withProcedureName ("sp_getDetails");jdbcCall.setProcedureName ("sp_getDetails");

Map m = jdbcCall.execute ();

1 Ответ

0 голосов
/ 29 января 2019

Один из способов сделать это - использовать java.util.concurrent.FutureTask

ExecutorService executor = ...;
FutureTask<Map> future = new FutureTask<Map>(new Callable<Map>() {
    public Map call() {
        return jdbcCall.execute();
    }});
executor.execute(future);

Затем вы можете просто игнорировать поиск результата объекта future - но executor выполнит ваш вызовв фоновом потоке, а затем просто конец.Между тем текущий поток (то есть, который делает вызов executor.execute) просто продолжит выполнение без блокировки.

...