|
|
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
Всем привет. Нуждаюсь в советах. В общем задача такая: Есть очередь сообщений, получатель посредством Веб-сервисов (моего) дергает веб-метод (допустим getMessages) и получает эти сообщения. После обработки их в своей системе он должен вызвать веб-метод (confirmMessages) подтверждения получения этих сообщений. В getMessages я попросту делаю запрос в БД, например: Код: plsql 1. 2. Далее id сообщений перегоняю в таблицу с каким-либо суррогатным GROUP_ID для группировки этих данных. Этот GROUP_ID я возвращаю получателю. Commit; В confirmMessages я ожидаю этот GROUP_ID и помечаю сообщения как отправленные. Но это велосипед. Если вдумываться, то нужно будет решать кучу проблем, например таймауты подтверждения, повторное подтверждение, область видимости неподтвержденных данных в getMessages и т.д. Может уже есть готовые решения (например в JavaEE) для решения этой задачи? т.е. мне нужно какое-то подобие транзакций более высокого уровня чем EJB на уровне WS. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 15:08 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
Во-первых select for update можно выполнять только в том случае если у вас транзакция кратковременная (и речь не только о БД). В вашем случае это пуля в лоб системе. Во-вторых не понятно какая цель у этих блокировок? Обычно, в подобных системах от пессимистических блокировок отказываются в принципе. Или у вас клиенты постоянно будут бороться за данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 15:17 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
EDUARD_2транзакций более высокого уровняназываются Распределенные. Уверен что нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 15:25 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
EDUARD_2, Тебе по ws прислали УдалитьПетрова и потом спрашивают подверждения или отката? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 15:29 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
Petro123EDUARD_2, Тебе по ws прислали УдалитьПетрова и потом спрашивают подверждения или отката? Мне присылают - "отдай мои сообщения", а потом присылают "подтверждаю, что забрал свои сообщения, не присылай мне их больше". BlazkowiczВо-первых select for update можно выполнять только в том случае если у вас транзакция кратковременная (и речь не только о БД). В вашем случае это пуля в лоб системе. каждый потребитель забирает только свои данные, в данном select есть ограничение по наименованию потребителя и не более 200 строк, например. Если я не буду лочить эти записи, то при вставке в таблицу для группировки эти данных - попадутся дубликаты, да и потребитель больше 1 раза их обработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 15:50 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
EDUARD_2Если я не буду лочить эти записи, то при вставке в таблицу для группировки эти данных - попадутся дубликаты Мне не понять что под этим подразумевается. Но если это единственная причина, то, уверен, что есть решение получше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 15:53 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
EDUARD_2, В общем случае ws не помнит никого и что кому отсылал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 15:55 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
EDUARD_2каждый потребитель забирает только свои данные,ID потребителя при запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 15:57 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
Blazkowiczто, уверен, что есть решение получше за этим я и пришел сюда =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:01 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
Petro123ID потребителя при запросе? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:02 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
EDUARD_2Petro123ID потребителя при запросе? да Договорись, что факт отправки при запросе с id и является "больше не присылать". Самому ставить галку в бд. Все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:07 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
EDUARD_2... Если я не буду лочить эти записи, то при вставке в таблицу для группировки эти данных - попадутся дубликаты, да и потребитель больше 1 раза их обработает. А ты уверен, что сейчас они лочатся как задумано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:11 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
По-моему нужно любую очередь сообщений взять (MQ) и завернуть в (SOAP). Там и транзакции и подтверждения есть. В некоторых даже SOAP интерфейс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:21 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
Petro123Самому ставить галку в бд. А если связь между потребителем и веб-сервисом пропала? у него экзепшин транспортного уровня, а у меня фиксация транзакции?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:23 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
EDUARD_2Petro123Самому ставить галку в бд. А если связь между потребителем и веб-сервисом пропала? у него экзепшин транспортного уровня, а у меня фиксация транзакции?) Try Ws.send(); Db.update галка что отправили Проверил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:27 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevА ты уверен, что сейчас они лочатся как задумано? уверен, в запросе выборки сообщений из бд, есть условие not in\exists к этой самой групповой таблице. если кто-то залочил записи из таблицы сообщений, то он их должен положить в таблицу с группированными данными, пока он их не положил, они не доступны другим, после того как положит, селект их уже не вернет, а если не положит, то разлочит записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:28 |
|
||
|
Web Service + Oracle RDBMS + транзакция
|
|||
|---|---|---|---|
|
#18+
А где прочитать про транзакции в SOAP сообщениях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 16:29 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39603079&tid=2122253]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 145ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...