Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / центр уведомлений / 25 сообщений из 170, страница 1 из 7
24.09.2021, 13:56
    #40099746
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
Здравствуйте.

есть БД, есть N пользователей, работающих в БД.
Задача: написать на java центр уведомлений пользователей о событиях в БД.
Как я понимаю, мне нужно реализовать сервер и клиент, так чтобы сервер был всегда подключен к БД (желательно в один стабильный коннект), а клиенты были бы подключены к серверной части приложения, и получали уведомления только когда им есть что вычитать (callback?), не нагружая при этом сервер.

Пожалуйста подскажите, есть ли подобные фреймворки, чтобы не сильно углубляться клиент-серверное взаимодействие и взять готовый шаблон?
...
Рейтинг: 0 / 0
24.09.2021, 14:33
    #40099753
Tropic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
Есть ряд продуктов, например, debezium, которые фиксируют события в БД (инсерты, апдейты, делеты), используя различные приемы. В частности, обрабатывая журналы транзакций, бинлог и т.д. Все обнаруженные события debezium рассылает в кафку.
...
Рейтинг: 0 / 0
24.09.2021, 15:20
    #40099774
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio,
Вас интересует техническое событие insert или бизнес событие "клиент взял кредит"?
Первое будет не очень правильной хотелкой.
...
Рейтинг: 0 / 0
24.09.2021, 15:29
    #40099778
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio,
Сделайте так:
- приложение1 обычное CRUD приложение
- приложение2 мониторит бд на события и отправляет по мылу сообщения.
Мониторить можно логи сервера чтобы его не нагружать.
В результате при нагрузке вы всегда найдете что начинает тормозить из за каллбэков событий - прил1, прил2 или сама бд
Подходит паттерн?
...
Рейтинг: 0 / 0
24.09.2021, 15:49
    #40099786
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
Например Oracle умеет уведомление слать при изменении указанных объектов. Т.ч. ничего мониторить не нужно

Мониторить логи - ну удачи... на мой взгляд это работа не на один человеко-год. Или нужно покупать/брать готовые продукты
...
Рейтинг: 0 / 0
24.09.2021, 15:53
    #40099791
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
PetroNotC Sharp,
наверное не совсем четко объяснил задачу. Извините, давайте еще раз попробую.

речь не про CRUD или update/insert/delete.

есть старая БД, со своим десктоп-клиентом времен динозавров. в нем очень нехватает api для пушей пользователей, когда они запускают хранимки какие-нибудь. При этом они запускают все это по RPC с ожиданием, хотя асинхронно запускать хранимки тоже можно. Но при таком запуске встает вопрос - как уведомить пользователя о том, что его процедура завершилась?
Так родилась идея написать на javaFX скромный центр уведомления, который будет поверх окна клиента оповещать его об ошибке/успехе (ну фактически прокидывать текст ошибки/успех из хранимки в пуш (про окна вопросов нет).

Для того, чтобы сделать все вышеописанное, мне видится, что нужно сделать:
-Приложение 1, которое будет держать коннект в БД и смотреть в очередь/табличку на предмет наличия невычитанных пушей для конкретного клиентского места. При их наличии раздавать Приложению 2 месседжи.
-Приложение 2, которое будет непосредственно общаться с Приложением 1, получать от него сообщение, и красиво выводить.

я подчеркну мысль, что хотелось бы не просто клиента написать, который напрямую с клиентского рабочего места будет делать коннект к БД (потому что пользователей БД может быть 500+, и нагружать базу не хотелось бы даже), а именно клиент-серверное приложение. и как я понимаю, тут следует использовать callback'и, чтобы Приложение 2 не заваливало Приложением 1 запросами на наличие сообщений для них.

Так вот мой вопрос в том - есть ли удобный фреймворк/шаблон/паттерн для создания Приложения 1 и 2 так, чтобы все это не с нуля изучать?
уверен, что идея не революционная.
...
Рейтинг: 0 / 0
24.09.2021, 16:00
    #40099797
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
Leonid Kudryavtsev,
Логи можно и руками делать. Человеческие)))
...
Рейтинг: 0 / 0
24.09.2021, 16:03
    #40099801
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio,

У меня вопрос - как вы планируете узнать что ХП завершилась и как она завершилась, если она была запущена не вами?
...
Рейтинг: 0 / 0
24.09.2021, 16:06
    #40099804
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
Тут даже десктоп в вопросе был? Не веб проект?)))
...
Рейтинг: 0 / 0
24.09.2021, 16:06
    #40099806
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
Garrick,
напишу пакет на БД, через который можно будет в конце вызова ХП вызвать процедуру а-ля push2User
...
Рейтинг: 0 / 0
24.09.2021, 16:09
    #40099807
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio,
Перевод синхронного десктоп на асинхронную работу это переписать тонну кода.
...
Рейтинг: 0 / 0
24.09.2021, 16:12
    #40099810
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
мне кажется вы меня не правильно услышали.

Задача в том, чтобы написать API для пуша, и постепенно применять его в работе, а не перевести все хранимки в асинхрон.
...
Рейтинг: 0 / 0
24.09.2021, 16:13
    #40099811
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio
Garrick,
напишу пакет на БД, через который можно будет в конце вызова ХП вызвать процедуру а-ля push2User

т.е. вы готовы переделать все ХП?
Тогда если исключить e-mail рассылку, будет очень удобно использовать JMS. ХП по окончании работы шлёт сообщение в очередь, клиенты JMS подписываются на нужные сообщения и получают их по мере появления.
...
Рейтинг: 0 / 0
24.09.2021, 16:15
    #40099814
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
господа, мы углубляемся в бессмысленную полемику.

я написал вопрос в изыскательных целях.
подскажите по сути - есть ли фреймворки для организации описанного взаимодействия между Приложением 2 и Приложением 1?
...
Рейтинг: 0 / 0
24.09.2021, 16:15
    #40099815
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio,
А это что?
автор. в нем очень нехватает api для пушей пользователей, когда они запускают хранимки какие-нибудь. При этом они запускают все это по RPC с ожиданием, хотя асинхронно запускать хранимки тоже можно.
Подробнее As is to be
Пример плохого сейчас.
...
Рейтинг: 0 / 0
24.09.2021, 16:17
    #40099816
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio,
Вы ничего не описали.
Но вот вам таблетка - Apache camel
...
Рейтинг: 0 / 0
24.09.2021, 16:18
    #40099818
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
Garrick,
Если у него длинный коннект, то все хранимки под своим юзверям запуск.
Фиг знает что у него
...
Рейтинг: 0 / 0
24.09.2021, 16:20
    #40099820
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
PetroNotC Sharp,

as is
запустил отчет , который выгружает в эксель какую-то инфу минут 10-15.
и пользователь либо идет покурить, либо поднимает второй экземпляр клиента к БД для параллельной работы в другом окне.

to be
пишу обертку пакета в БД на вызов того же отчета в job. В конце обертки, после вызова процедуры отчета вызываю собственный push API, через который пользователю приходит алерт, что отчет готов. При старте обертки, пользователь ставит задание на выполнение очета в джоб и модальное окно закрывается, таким образом не блокируя его рабочее место. Он может работать дальше.
...
Рейтинг: 0 / 0
24.09.2021, 16:22
    #40099821
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio

1. СУБД

В Oracle пакет DBMS_PIPE IMHO.
Или DBMS_AQ

Без указания СУБД - обсуждение в вакууме.

2. Если про HTTP, то опять таки. Обычное HTTP соединение. На сервере в Stream пишешь, на клиенте из stream читаешь. В чем проблема?

Да даже на сокетах - аналогично
...
Рейтинг: 0 / 0
24.09.2021, 16:23
    #40099822
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio,
To be
Создай поток и внутри коннект. Вот там и запускай ХП.
...
Рейтинг: 0 / 0
24.09.2021, 16:28
    #40099823
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio
Он может работать дальше.
получается главное чтобы работали дальше.
Так?
Коммит через 10 мин в конце хранимки?
Клиентский или северный?
Не удалит СЛУЧАЙНО запись пока ХП работает? Которая один ко многим товар цепляет к накладной?
...
Рейтинг: 0 / 0
24.09.2021, 16:32
    #40099825
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
Leonid Kudryavtsev,

1. Oracle
проблема пайп в оракле в том, что они могут быть утеряны. для mission critical систем в какой-нибудь отчетный период потерять алерт - это не очень решение, мягко говоря.
AQ целевой вариант.

Но вы отвечаете на вопросы, которые я не задавал.
опыт работы и с пайпами и с очередями у меня есть.

Мне хочется понять есть ли готовые решения для общения между клиентским приложением, и приложением подключенным к серверу.

Я понимаю, что можно на коленке написать на сокетах или на http. Но когда это потащу в прод, мне зададут резонные вопросы про http s , либо про гибкую отказоустойчивость на сокетах и не гибкую конфигурацию адресов для подключения к БД и Приложению, которое держит с ним коннект. Не говоря уже о всяких прокси, которых мне бы даже касаться не хотелось.

т.е. в идеале я бы хотел взять готовый клиент-сервер экзампл, в котором уже зашиты возможности по работе с сертами, настройкой прокси, jdbc, пул коннектов и т.п, и просто написать на серверную часть логику для вычитки сообщений из очереди (AQ/Таблица/Pipe), а на клиентское приложение навесить получение сообщения и javafx с 3мя видами окон. и все
...
Рейтинг: 0 / 0
24.09.2021, 16:33
    #40099827
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
PetroNotC Sharp,

Вы ищете ответ на вопрос, который я не задавал.
отправку пуша можно написать в автономной транзакции.
...
Рейтинг: 0 / 0
24.09.2021, 16:34
    #40099828
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio,
Готовое решение это запуск ХП не в потоке ГУИ!
Всё
...
Рейтинг: 0 / 0
24.09.2021, 16:35
    #40099829
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
центр уведомлений
wolfio,
Пуш не нужен.
Ваш кэп.
Конец работы потока вместо него.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / центр уведомлений / 25 сообщений из 170, страница 1 из 7
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]