У меня есть таблица DB2, содержащая большое количество записей для отправки внешней системе через MQ. В таблице есть столбец, содержащий статус записи (отправленный или ожидающий отправки).z/os cics db2 cobol программа для обработки записей базы данных одновременно
Я пишу программу планировщика, чтобы постоянно проверять, есть ли записи в таблице, которые «отправляются на отправку». Если да, программа отправит ожидающие записи и обновит статус соответственно
Это расписание будет запущено в нескольких транзакциях. Поэтому я ожидаю, что несколько экземпляров одной и той же программы будут выполняться одновременно
Мои вопросы - как предотвратить одновременное получение и отправку одних и тех же записей несколькими планировщиками?
Мне сказали использовать курсор с замками на уровне строк? но я не уверен, как это работает
замечания: Я работаю над CICS COBOL в г/зева среде
Вместо того, чтобы тратить ресурсы на то, что нужно постоянно смотреть на БД, почему бы вам просто не сделать MQ, когда вы делаете «ожидающий»? Как вы думаете о выполнении программы «планировщик»? –
Существует длинная история за @BillWoodger. Отправляемые сообщения будут подтверждаться из систем счетчиков.Существует порог отправки сообщений. Скажем, если отправлено 500 сообщений, но нет подтверждения, нам нужно будет прекратить отправлять дальнейшие сообщения. Таким образом, существует определенная логика для определения и отправки сообщений. Но несколько экземпляров осложняют ситуацию – william
Вам необходимо обновить свой вопрос со всей необходимой информацией (используйте ссылку редактирования под вопрос). Мы не можем делать весь дизайн, потому что мы не все знаем. Написание собственного «планировщика» очень сложно и сложно обойтись без влияния на другую обработку. Неизменная многократная задача автоматически запускается, это плохая идея. Checker и doer даже получают доступ к тем же данным. Если у вас есть записи в очереди, вы всегда можете проверить и переустановить их, если это необходимо. –