Использование таблиц SQL Server в качестве очередей сообщений

0. zhichkin 725 22.03.20 18:26 Сейчас в теме
Статья о событийно-ориентированной интеграции и об асинхронной обработке данных в контексте 1C под управлением SQL Server. Подробно разбирается вопрос использования таблиц СУБД в качестве очередей сообщений.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Cyberhawk 120 27.03.20 17:30 Сейчас в теме
заблокировать запись регистра сведений таким образом, чтобы другие транзакции не смогли её прочитать и одновременно с этим не были бы заблокированы ожиданием на чтение
Неправда. ЗаблокироватьДанныеДляРедактирования - без какого-либо ожидания, т.е. сразу выдает отлуп, если любой другой сеанс раньше уже успел это сделать.
3. zhichkin 725 27.03.20 17:58 Сейчас в теме
(2)
ЗаблокироватьДанныеДляРедактирования

Это объектная блокировка. Она не запрещает чтение данных, например, запросом, а также не запрещает запись в других пользовательских сеансах. Эту технику конечно же можно использовать, если все программисты будут соблюдать соглашение о вызове этого метода глобального контекста перед тем, как что-то читать из базы или изменять в ней.

Та цитата из моей статьи, которую Вы приводите, о блокировках и транзакциях СУБД. Это принципиально другая вещь.
4. Cyberhawk 120 27.03.20 19:10 Сейчас в теме
(3) Про первый абзац все понятно.
Но цитату предваряют твои же слова
очень важно в момент потребления сообщения
. Неужели у тебя в прикладном коде так много мест, где читаются / пишутся эти сообщения? Можно ведь заменить эти места на один-единственный метод (точку входа). Даже если их несколько, нет никаких проблем "расставить сети" (объектную блокировку) во всех таких местах. В идеале - реализовать и предоставить разработчику программный интерфейс, чтобы отпала необходимость предъявлять вообще какие-то требования к разработчику, который будет его использовать.
А вот как обсуждение конкретного механизма (чтение сообщений) перетекло в глобальное
что-то читать из базы или изменять в ней
, не особо ясно, но это, наверное, и не важно. Я лишь отвечал на конкретный фрагмент описания конкретного механизма.
5. zhichkin 725 27.03.20 19:26 Сейчас в теме
(4) Я с Вами не спорю. Я с Вами соглашаюсь. Объектная блокировка безусловно очень нужная и полезная вещь.
В идеале - реализовать и предоставить разработчику программный интерфейс

Так и нужно делать. Ещё раз согласен с Вами.
6. zhichkin 725 02.06.20 16:09 Сейчас в теме
Добавил пример практического применения технологии на GitHub.
https://github.com/zhichkin/one-c-sharp-sql/tree/master/messaging/table-queues
Оставьте свое сообщение
Вопросы с вознаграждением