IPC::PubSub

IPC::PubSub is Perl module for Interprocess Publish/Subscribe channels.
Download

IPC::PubSub Ranking & Summary

Advertisement

  • Rating:
  • License:
  • MIT/X Consortium Lic...
  • Price:
  • FREE
  • Publisher Name:
  • Audrey Tang
  • Publisher web site:
  • http://search.cpan.org/~adamk/Module-Install-0.68/lib/Module/Install/PAR.pm

IPC::PubSub Tags


IPC::PubSub Description

IPC::PubSub is Perl module for Interprocess Publish/Subscribe channels. IPC::PubSub is Perl module for Interprocess Publish/Subscribe channels.SYNOPSIS # A new message bus with the DBM::Deep backend # (Other possible backends include Memcached and PlainHash) my $bus = IPC::PubSub->new(DBM_Deep => '/tmp/pubsub.db'); # A channel is any arbitrary string my $channel = '#perl6'; # Register a new publisher (you can publish to multiple channels) my $pub = $bus->new_publisher("#perl6", "#moose"); # Publish a message (may be a complex object) to those channels $pub->msg("This is a message"); # Register a new subscriber (you can subscribe to multiple channels) my $sub = $bus->new_subscriber("#moose"); # Publish an object to channels $pub->msg("This is another message"); # Set all subsequent messages from this publisher to expire in 30 seconds $pub->expiry(30); $pub->msg("This message will go away in 30 seconds"); # Simple get: Returns the messages sent since the previous get, # but only for the first channel. my @msgs = $sub->get; # Simple get, with an explicit channel key (must be among the ones # it initially subscribed to) my @moose_msgs = $sub->get("#moose"); # Complex get: Returns a hash reference from channels to array # references of . my $hash_ref = $sub->get_all; # Changing the list of channels we subscribe to $sub->subscribe('some-other-channel'); $sub->unsubscribe('some-other-channel'); # Changing the list of channels we publish to $pub->publish('some-other-channel'); $pub->unpublish('some-other-channel'); # Listing and checking if we are in a channel my @sub_channels = $sub->channels; my @pub_channels = $pub->channels; print "Sub is in #moose" if $sub->channels->{'#moose'}; print "Pub is in #moose" if $pub->channels->{'#moose'}; # Raw cache manipulation APIs (not advised; use ->modify instead) $bus->lock('channel'); $bus->unlock('channel'); my @timed_msgs = $bus->fetch('key1', 'key2', 'key3'); $bus->store('key', 'value', time, 30); # Atomic updating of cache content; $_ is stored back on the # end of the callback. my $rv = $bus->modify('key' => sub { delete $_->{foo} }); # Shorthand for $bus->modify('key' => sub { $_ = 'val' }); $bus->modify('key' => 'val'); # Shorthand for $bus->modify('key' => sub { $_ }); $bus->modify('key');This module provides a simple API for publishing messages to channels and for subscribing to them.When a message is published on a channel, all subscribers currently in that channel will get it on their next get or get_all call.Currently, it offers three backends: DBM_Deep for on-disk storage, Memcached for possibly multi-host storage, and PlainHash for single-process storage.Please see the tests in t/ for this distribution, as well as "SYNOPSIS" above, for some usage examples; detailed documentation is not yet available. Requirements: · Perl


IPC::PubSub Related Software