Skip to content

Instantly share code, notes, and snippets.

@domm
Created December 7, 2012 10:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save domm/4232337 to your computer and use it in GitHub Desktop.
Save domm/4232337 to your computer and use it in GitHub Desktop.
CPU eating ZeroMQ subscriber worker
#!/usr/bin/perl
use 5.016;
use ZMQ::LibZMQ3;
use ZMQ::Constants qw(ZMQ_SUB ZMQ_SUBSCRIBE ZMQ_POLLIN);
my $context = zmq_init();
my $subscriber = zmq_socket($context, ZMQ_SUB);
zmq_connect($subscriber, 'tcp://localhost:5556');
zmq_setsockopt($subscriber, ZMQ_SUBSCRIBE, 'request');
my %stat;
my $cnt=0;
while (1) {
zmq_poll([{
socket => $subscriber,
events => ZMQ_POLLIN,
callback => sub {
my $msg = zmq_msg_data(zmq_recvmsg($subscriber));
$msg=~s/^request //;
say "someone accessed $msg";
$cnt++;
$stat{ $msg }++;
if ($cnt % 10 == 0 ) {
foreach (sort keys %stat) {
say "$_\t$stat{$_}";
}
}
}
}]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment