PUB-SUB with multipart messages
file: bin/anyevent_publisher.pl @c3e99e4d
1: #!/usr/bin/env perl
2: use 5.016;
3: use ZMQ::LibZMQ3;
4: use ZMQ::Constants qw(ZMQ_PUB ZMQ_FD ZMQ_SNDMORE);
5: use AnyEvent;
6:
7: my $context = zmq_init();
8: my $publisher = zmq_socket($context, ZMQ_PUB);
9: zmq_bind($publisher, 'tcp://*:10001');
10:
11: say "Collect MP3 filenames";
12: my $data = get_mp3_data();
13:
14: say "Start publishing messages";
15: my $w = AnyEvent->timer(after => 1, interval => 0.1, cb => sub {
16: my $message = $data->[rand(@$data)];
17: my $last_frame = pop(@$message);
18: foreach my $frame (@$message) {
19: zmq_msg_send($frame, $publisher, ZMQ_SNDMORE);
20: }
21: zmq_msg_send($last_frame, $publisher);
22: });
23: AnyEvent->condvar->recv;