GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Qudo::Manual::JA::Tutorial(3) User Contributed Perl Documentation Qudo::Manual::JA::Tutorial(3)

Qudo::Manual::JA::Tutorial - Qudo's sample code document lang:ja

QudoでJobを処理するためには、ClientとWorkerを作成する必要があります。

ここではサンプルを用いながら、それぞれの作成方法について解説していきます。

Qudoを使うにはデータをストアするためにQudo用のデータベースを設定する必要があります。 現在対応しているRDBMSは「MySQL」,「SQLite」,「PostgreSQL」です。

スキーマのsetupでは付属のqudoコマンドで行ってください

QudoでJob Queueingを行うクライアントは以下のように書きます

    # in your script:
    use Qudo;
    my $client = Qudo->new(
        driver_class => 'Skinny', # DBIx::Skinny
        databases => [
            +{
                dsn      => 'dbi:SQLite:/tmp/qudo.db',
                username => '',
                password => '',
            }
        ],
    );

    # enqueue job
    $client->enqueue("Your::Worker::Mail", { arg => $user->email, uniqkey => $user->login_id});

まずQudoのオブジェクトを作成します。

JobをQueueingするデータベースを指定してオブジェクトを作成します。

Qudoでは複数のデータベースへの接続をサポートしています。

オブジェクト作成時の第二引数は必ず、データベース接続情報のhashrefを配列にして、

そのリファレンスを渡す形にしてください。

作成したオブジェクトを元にJobをenqueueします。

enqueueメソッドの

第一引数はJobを処理させるWorkerのpackage名

第二引数はWorkerが使う引数の情報

この例の場合、Jobを処理するクラスとしてYour::Worker::Mailを指定し、

処理させる引数として$user->email(メールアドレス)を指定し、

Jobのユニークキーとして$user->login_id(ログインID)を指定しています。

その他第二引数のhashrefに指定出来るオプションとしては、以下があります

run_after … ここに秒数を指定することで、現在から何秒後に処理を開始させるかを指定出来ます。

priority … ここに優先度を指定することで、その種類のjobの中でpriotiry値が高いものから順に処理がされます

クライアントが行う処理はこれだけです。

あとはこれから作成するYour::Worker::Mailが処理してくれます。

queueingされたJobを処理していくworkerを作成します

    package Your::Worker::Mail;
    use base 'Qudo::Worker';
    sub work {
        my ($class, $job) = @_;
        print $job->arg; #print $user->email;
        
        # send mail process...
        
        $job->completed; # finished job!
    }
    1;

Qudo::Wokerを継承したクラスを作成し、

『必ず』workメソッドをオーバーライドしてください。

workメソッドの第二引数にはJobの情報が丸々わたってきます。

$job->argメソッドでQueueingする際に指定した、Workerに使ってほしいと指定された引数情報が格納されています。

次に、 workerを起動するスクリプトを以下のように用意します

    # ex) qudo-worker.pl :
    use Qudo;
    my $worker = Qudo->new(
        driver_class => 'Skinny',
        databases => [
            +{
                dsn      => 'dbi:SQLite:/tmp/qudo.db',
                username => '',
                password => '',
            }
        ],
        manager_abilities => [qw/Your::Worker::Mail/], # set worker
    );
    $worker->work(); # boot manager
    # work work work!

clientと同じようにワーカーが使うデータベースを指定してQudoのオブジェクトを作成します。

この時にmanager_abilitiesの引数をつかって、

このworkerが管理するWorkerクラスを指定します。

$worker->work()メソッドを呼び出すことで、

JobがQueueingされる毎にWorkerクラスを呼び出して処理させています。

基本的にはこれだけです。

簡単でしょ:)

workメソッド内では無限ループが発生し、JobがQueueingたびにJobに対応するWorkerに処理が移譲されます。

QudoではJobをstoreする仕組みを差し替える事ができます。

デフォルトではDBIx::Skinnyを利用しRDBMSを利用したDriverが使われます。

Skinny以外にはDBIをサポートしています。

DriverもHookやPlugin同様、好きに書く事ができますので、DBICが使いたい人、CDBIを使いたい人、Data::Modelを使いたい人など色々有ると思いますので

好きに書いてください:)

書いたら教えてもらえるととてもうれしいです:)

好きに書いたDriverは

    Qudo->new(
        driver_class => 'Your::Driver',
        databases => [
            +{
                dsn      => 'dbi:SQLite:/tmp/qudo.db',
                username => '',
                password => '',
            }
        ],
    );

driver_classに設定することで使う事ができます。

2010-11-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.