Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Обновление бд, ивентов, синхронизация

Alien_Know

Активный участник
Пользователь
Баллы
61
Кто подскажет как сделать ивент который будет слушать добавление/изменения/удаление в базе данных и вызывать соответствующий ивент например отдельно для изменения, для добавления и удаления? Как все это сделать есть идеи?
 
Ну, для начала, что за базу ты используешь? MySQL? Насколько я знаю, там нет возможности отслеживания подобных событий. Возможно есть в других базах по типу Postgres, но не это не точно.

Ты можешь вызывать свой код, когда сам программно добавляешь или удаляешь записи.
Если же делаешь на нескольких разных серверах/в разных приложениях, то придется использовать Redis или брокеры сообщений по типу RabbitMQ.

На самом деле, будет лучше, если ты расскажешь в общих чертах свою конечную цель
 
Последнее редактирование:
Эвенты не слушают, а их бросают. Слушают — слушатели эвентов.

Спрятать подключение к БД за API, а внутри уже кидать эвенты.
Но это, конечно, вариант только если клиентский код тоже твой.
Перехватить запросы в БД, которые делает другой плагин — максимально сложно :)
 
Вообщем есть плагин Towny хочу его переделать под multipaper суть в том что есть multipaperMaster к нему подключены другие сервера (сервер1, 2, 3, 4, 5, 6 ........) и все эти сервера работают как один (ядра у серверов все pufferfish) не суть подойдёт любое производное от баккита, если кратко то (2 игрока могут играть на 2 разных серверах при этом так же взаимодействовать бить друг друга, перекидывать вещи и т.д)
В этом плагине под эту сборку много чего не работает, например (ну кто знает этот плагин то поймёт думаю):

Не работает изза того что плагины работают как разные программы (надеюсь понятно объяснил:good:) и вот проблеммы которые вытекают изза этой несвязанности
  1. Приглашение игроков в город, нацию, альянс не прилетает(если они на разных серверах)
  2. Чат некорректно в некоторых случаях
  3. нет нормальной синхронизации территорий, допустим когда 2 игрока живут в одном городе (играют на разных серверах:whistle:) один приватит теру, а второму не приходит уведомление что была добавленна территория к городу, удалена, запривачена, куплена, продана, изменение флагов и т.д. (да можно принудительно обновить базу данных (но в какой момент обновлять?) и всё это на некоторое время прийдёт в одинаковое состояние пока не произойдут изменения на "серверах") (но так не будут приходить уведомления:silence: они же ивенты и никак просто не связаны)
  4. менюшки, статистика городов получаеться тоже не синхронизированны (ну да можно базу данных обновить и всё будет по состоянию бд)
есть у MP такая штука https://github.com/MultiPaper/MultiLib типо plugin message из bungeecord (я ей научился пользоваться как отправлять сообщения на другие сервера, читать, обрабатывать

Доступ к исходникам есть https://github.com/TownyAdvanced/Towny (плагин огромен:cry:) но я всё таки пересмотрел практически каждую строку кода которая относиться к тому о чём я написал выше

незнаю что добавить, Корочее помогите что здесь можно сделать куда двигаться может кто с этим имел дело

(жаль нету символа стена-голова)
 
Ну в принципе я думаю plugin message достаточно. Отправляй им нужные изменения на нужные или все сервера, а на этих серверах читай и синхронизируй вручную, раз уж код плагина есть.
 
Ну в принципе я думаю plugin message достаточно. Отправляй им нужные изменения на нужные или все сервера, а на этих серверах читай и синхронизируй вручную, раз уж код плагина есть.
Спасибо, но уже пытался привязать plugin message но как то он не очень правильно работает на Velocity, или прост я непонимаю как всё правильно настроить
 

Поделиться этой страницей

Назад
Верх