使用MySQL UDFs来调用gearman分布式任务分发系统
2014-03-23 00:00
706 查看
当向表插入数据的时候,触发执行某些任务 安装gearman参加:
http://www.ttlsa.com/html/663.html 一.安装gearman-mysql-udf # apt-get install libmysql++-dev # wget
https://launchpad.net/gearman-mysql-udf/trunk/0.6/+download/gearman-mysql-udf-0.6.tar.gz # tar zxvf gearman-mysql-udf-0.6.tar.gz # ./configure --with-mysql=/usr/bin/mysql_config --libdir=/usr/lib/mysql/plugin # make # make install # mysql [codesyntax lang="sql"] mysql> CREATE FUNCTION gman_do RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_high RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_low RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_background RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_high_background RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_low_background RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE AGGREGATE FUNCTION gman_sum RETURNS INTEGER SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_servers_set RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> SELECT gman_servers_set("192.168.1.60:4730,192.168.1.60:4731") as gman_servers; //设置gearman server +-------------------------------------+ | gman_servers | +-------------------------------------+ | 192.168.1.60:4730,192.168.1.60:4731 | +-------------------------------------+ mysql> create table udf_test( -> id int unsigned auto_increment primary key, -> val varchar(20) not null); //新建表 mysql> create trigger sendmail before insert on udf_test for each row set @return=gman_do_background('MAIL','undef'); //创建触发器,当向表udf_test插入数据时候,执行任务。 [/codesyntax] # perl -MCPAN -e shell cpan> install Gearman::Worker //安装Gearman::Worker模块 cpan> install Mail::SendEasy //安装Mail::SendEasy模块 # vi WORKER_SENDMAIL.pl //创建worker任务 [codesyntax lang="perl"] use strict; use Mail::SendEasy ; use v5.10; use Gearman::Worker; my $worker=new Gearman::Worker; $worker->job_servers('192.168.1.60:4730'); $worker->register_function(MAIL=>\&sendmail); $worker->work while 1; sub sendmail{ my $job=shift; my $date=localtime; my $mail = new Mail::SendEasy( smtp => 'smtp.ttlsa.com' , user =>
'service@ttlsa.com' , pass => '******', ); print "$date\n"; my $status = $mail->send( from =>
'service@ttlsa.com' , from_title => 'ttlsa' , to =>
'xxxxx@qq.com' , subject => "MAIL Test $date" , msg => "$date" , html => "<b>test $date</b>" , ); if (!$status) { print $mail->error ;} } [/codesyntax] # perl WORKER_SENDMAIL.pl & # perl WORKER_SENDMAIL.pl & //在后台运行两个worker 二.测试 1.向udf_test表插入数据 mysql> insert into udf_test value ('','a'); 2.查看是否收到邮件
三.Gearman server信息 # telnet 192.168.1.60 4730 Trying 192.168.1.60... Connected to 192.168.1.60. Escape character is '^]'. status MAIL 0 0 2 说明:第一列worker名称;第二列jobs执行数量;第三列jobs队列数量;第四列可用worker数量
http://www.ttlsa.com/html/663.html 一.安装gearman-mysql-udf # apt-get install libmysql++-dev # wget
https://launchpad.net/gearman-mysql-udf/trunk/0.6/+download/gearman-mysql-udf-0.6.tar.gz # tar zxvf gearman-mysql-udf-0.6.tar.gz # ./configure --with-mysql=/usr/bin/mysql_config --libdir=/usr/lib/mysql/plugin # make # make install # mysql [codesyntax lang="sql"] mysql> CREATE FUNCTION gman_do RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_high RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_low RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_background RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_high_background RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_low_background RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE AGGREGATE FUNCTION gman_sum RETURNS INTEGER SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_servers_set RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> SELECT gman_servers_set("192.168.1.60:4730,192.168.1.60:4731") as gman_servers; //设置gearman server +-------------------------------------+ | gman_servers | +-------------------------------------+ | 192.168.1.60:4730,192.168.1.60:4731 | +-------------------------------------+ mysql> create table udf_test( -> id int unsigned auto_increment primary key, -> val varchar(20) not null); //新建表 mysql> create trigger sendmail before insert on udf_test for each row set @return=gman_do_background('MAIL','undef'); //创建触发器,当向表udf_test插入数据时候,执行任务。 [/codesyntax] # perl -MCPAN -e shell cpan> install Gearman::Worker //安装Gearman::Worker模块 cpan> install Mail::SendEasy //安装Mail::SendEasy模块 # vi WORKER_SENDMAIL.pl //创建worker任务 [codesyntax lang="perl"] use strict; use Mail::SendEasy ; use v5.10; use Gearman::Worker; my $worker=new Gearman::Worker; $worker->job_servers('192.168.1.60:4730'); $worker->register_function(MAIL=>\&sendmail); $worker->work while 1; sub sendmail{ my $job=shift; my $date=localtime; my $mail = new Mail::SendEasy( smtp => 'smtp.ttlsa.com' , user =>
'service@ttlsa.com' , pass => '******', ); print "$date\n"; my $status = $mail->send( from =>
'service@ttlsa.com' , from_title => 'ttlsa' , to =>
'xxxxx@qq.com' , subject => "MAIL Test $date" , msg => "$date" , html => "<b>test $date</b>" , ); if (!$status) { print $mail->error ;} } [/codesyntax] # perl WORKER_SENDMAIL.pl & # perl WORKER_SENDMAIL.pl & //在后台运行两个worker 二.测试 1.向udf_test表插入数据 mysql> insert into udf_test value ('','a'); 2.查看是否收到邮件
三.Gearman server信息 # telnet 192.168.1.60 4730 Trying 192.168.1.60... Connected to 192.168.1.60. Escape character is '^]'. status MAIL 0 0 2 说明:第一列worker名称;第二列jobs执行数量;第三列jobs队列数量;第四列可用worker数量
相关文章推荐
- 使用MySQL UDFs来调用gearman分布式任务分发系统
- MySQL UDFs 来管理调用 Gearman 的分布式的队列
- Gearman分布式任务处理系统(五)版本介绍、安装方法和使用说明
- mysql启用系统定时任务自动调用存储过程动态拼接表
- ictclas分词系统的使用,java调用,附带连接mysql进行读写。
- 分布式任务分发框架Gearman教程和PHP实现实例
- Gearman分布式任务处理系统(九)我的架构
- 分布式任务分发处理框架-Gearman
- 【mysql】备份篇1:使用系统计划任务+mysqldump 定时备份mysql数据库 不用输入密码自动导出sql文件
- MySQL使用udf调用系统程序
- 分布式任务分发框架Gearman教程和PHP实现实例
- Gearman分布式任务处理系统(十)后记(持续更新)
- 分布式任务系统GEARMAN FOR PYTHON DEMO
- Gearman任务分布系统部署windows平台_使用Cygwin
- Gearman——分布式任务分发框架
- 分布式任务系统gearman的python实战
- MySQL使用udf调用系统程序
- 用JGroups实现一个分布式任务分发系统
- 任务分发系统gearman
- Hi!欢迎使用一个Dynamo风格的分布式Redis集群分发管理系统WheatRedis - V2EX