2015-05-28 4 views
2

У меня есть базы данных в удаленных машинах. Предположим, db1 на http://example.com. Я имею в виду, что эта база данных не находится на моей локальной машине, но я могу подключить ее по URL-адресу.Как выполнить внешнюю функцию java с помощью триггеров MySQL?

Я хочу, чтобы при возникновении каких-либо обновлений на db1.table1 триггер вызывал функцию в приложении JAVA на моей локальной машине для выполнения некоторой обработки.

Я нашел решение here но он должен иметь функцию Java в той же машине, что у вас есть сервер MySQL из этой строки:

SET result = sys_exec('/path/to/javabin -jar your.jar'); 

Как я могу дать IP-адрес моего вместо path в библиотеке lib_mysqludf_sys или в какой-нибудь другой библиотеке?

+0

Вы могли это сделать? – sergioBertolazzo

+0

В запросах, –

ответ

1

Db-сервер получает изменения в таблице. Предположим, у вас есть php-обертка, и вы знаете, что вставка/обновление удалось достичь на уровне tranaction, поэтому используйте компиляцию php/jms для добавления в очередь jms (activemq и т. Д.). Если это не php, а скорее промежуточное программное обеспечение java на стороне сервера db, которое обрабатывает вставку/обновление, то же самое.

Теперь на вашей машине (не сервер БД) и есть ваше Java приложение работает постоянно и выглядывает на удаленных JMS

Вы можете сделать это с розетками тоже конечно.

Я бы использовал триггеры в качестве крайней меры, чтобы избежать откатов после того, как они сказали, вы пытаетесь перезвонить ракету (то есть ваша локальная машина может время от времени обрабатывать данные, относящиеся к откату). Это общие сведения (откаты), которые могут быть неактуальными в узком пространстве, с которым вы сталкиваетесь

Кроме того, не большой вентилятор триггера/udf/exec. Поэтому я наклоняюсь к очередям