如何通过 MySQL 触发器执行外部 java 函数?
How to execute external java function by MySQL triggers?
我在远程机器上有一个数据库。假设 db1
在 http://example.com 。我的意思是这个数据库不在我的本地机器上,但我可以通过 URL.
连接它
我希望每当 db1.table1 上发生一些更新时,触发器都会调用本地计算机上 JAVA 应用程序中的函数来执行一些处理。
我找到了一个解决方案 here 但 它需要在您拥有 MySQL 服务器 的同一台机器上具有 java 功能因为这一行:
SET result = sys_exec('/path/to/javabin -jar your.jar');
如何在 lib_mysqludf_sys
库或其他类似库中提供我机器的 IP 地址而不是 path
?
数据库服务器获得对 table 的修改。假设您有 php 包装器,并且您从调用中知道 insert/update 在交易级别成功,因此使用 php/jms 组合添加到 jms 队列(activemq 等相同的东西)。如果它不是 php 而是正在处理 insert/update 的数据库服务器端 java 中间件,则相同。
现在在你的机器上(不是数据库服务器)你有你的 java 应用程序 运行 不断并且它正在偷看远程 jms
当然你也可以用套接字来做。
我会使用触发器作为避免回滚的最后手段,正如他们所说,您正在尝试回调导弹(也就是说,您的本地机器有时可能正在处理与回滚相关的数据)。这些是一般性的(回滚),在您面临的狭窄范围内可能不相关
此外也不是 trigger/udf/exec 的忠实粉丝。所以我倾向于排队
我在远程机器上有一个数据库。假设 db1
在 http://example.com 。我的意思是这个数据库不在我的本地机器上,但我可以通过 URL.
我希望每当 db1.table1 上发生一些更新时,触发器都会调用本地计算机上 JAVA 应用程序中的函数来执行一些处理。
我找到了一个解决方案 here 但 它需要在您拥有 MySQL 服务器 的同一台机器上具有 java 功能因为这一行:
SET result = sys_exec('/path/to/javabin -jar your.jar');
如何在 lib_mysqludf_sys
库或其他类似库中提供我机器的 IP 地址而不是 path
?
数据库服务器获得对 table 的修改。假设您有 php 包装器,并且您从调用中知道 insert/update 在交易级别成功,因此使用 php/jms 组合添加到 jms 队列(activemq 等相同的东西)。如果它不是 php 而是正在处理 insert/update 的数据库服务器端 java 中间件,则相同。
现在在你的机器上(不是数据库服务器)你有你的 java 应用程序 运行 不断并且它正在偷看远程 jms
当然你也可以用套接字来做。
我会使用触发器作为避免回滚的最后手段,正如他们所说,您正在尝试回调导弹(也就是说,您的本地机器有时可能正在处理与回滚相关的数据)。这些是一般性的(回滚),在您面临的狭窄范围内可能不相关
此外也不是 trigger/udf/exec 的忠实粉丝。所以我倾向于排队