AnyEvent-Pg-Pool-Multiserver
view release on metacpan or search on metacpan
example/ex.pl view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use v5.10;
use lib 'lib';
use AnyEvent;
use AnyEvent::Pg::Pool::Multiserver;
my $servers = [
{
id => 1,
name => 'remote 1',
conn => 'host=remote1 port=5432 dbname=mydb user=myuser password=mypass',
},
{
id => 2,
name => 'remote 2',
conn => 'host=remote2 port=5432 dbname=mydb user=myuser password=mypass',
},
];
my $pool = AnyEvent::Pg::Pool::Multiserver->new( servers => $servers, local => 1 );
my $cv;
$cv = AE::cv;
# multi-server request
$pool->selectall_arrayref(
query => 'SELECT val FROM ( SELECT 1 AS val ) tmp WHERE tmp.val = $1;',
args => [ 1 ],
cb => sub {
my $results = shift;
my $errors = shift;
if ( $errors ) {
foreach my $srv ( @$errors ) {
say "err $srv->{error} with $srv->{server_name} $srv->{server_id}";
}
}
if ( $results ) {
foreach my $val ( @$results ) {
say "server_id=$val->{_server_id} value=$val->{val}";
}
}
$cv->send;
},
);
$cv->recv;
$cv = AE::cv;
# single-server request
$pool->selectall_arrayref(
query => 'SELECT val FROM ( SELECT 1 AS val ) tmp WHERE tmp.val = $1;',
args => [ 1 ],
server_id => 1,
( run in 1.083 second using v1.01-cache-2.11-cpan-39bf76dae61 )