Naveed Massjouni > POE-Component-MessageQueue > POE::Component::MessageQueue::Storage::Throttled

Download:
POE-Component-MessageQueue-0.3001.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Source  

NAME ^

POE::Component::MessageQueue::Storage::Throttled -- Wraps around another storage engine to throttle the number of messages sent to be stored at one time.

SYNOPSIS ^

  use POE;
  use POE::Component::MessageQueue;
  use POE::Component::MessageQueue::Storage::Throttled;
  use POE::Component::MessageQueue::Storage::DBI;
  use strict;

  my $DATA_DIR = '/tmp/perl_mq';

  POE::Component::MessageQueue->new({
    storage => POE::Component::MessageQueue::Storage::Throttled->new({
      storage => POE::Component::MessageQueue::Storage::DBI->new({
        dsn      => $DB_DSN,
        username => $DB_USERNAME,
        password => $DB_PASSWORD,
      }),
      throttle_max => 2
    }),
  });

  POE::Kernel->run();
  exit;

DESCRIPTION ^

Wraps around another engine to limit the number of messages sent to be stored at once.

Use of this module is highly recommend!

If the storage engine is unable to store the messages fast enough (ie. with slow disk IO) it can get really backed up and stall messages coming out of the queue. This allows a client producing execessive amounts of messages to basically monopolize the server, preventing any messages from getting distributed to subscribers.

It is suggested to keep the throttle_max very low. In an ideal situation, the underlying storage engine would be able to write each message immediately. This means that there will never be more than one message sent to be stored at a time. The purpose of this module is make the message act as though this were the case even if it isn't. So, a throttle_max of 1, will strictly enforce this, however, for a little bit of leniancy, the suggested default is 2.

CONSTRUCTOR PARAMETERS ^

storage => POE::Component::MessageQueue::Storage

The storage engine to wrap.

throttle_max => SCALAR

The max number of messages that can be sent to the DBI store at one time.

SUPPORTED STOMP HEADERS ^

Ignored. Passed through to the wrapped storage engine.

SEE ALSO ^

POE::Component::MessageQueue, POE::Component::MessageQueue::Storage, POE::Component::MessageQueue::Storage::Double

Other storage engines:

POE::Component::MessageQueue::Storage::Memory, POE::Component::MessageQueue::Storage::BigMemory, POE::Component::MessageQueue::Storage::FileSystem, POE::Component::MessageQueue::Storage::DBI, POE::Component::MessageQueue::Storage::Generic, POE::Component::MessageQueue::Storage::Generic::DBI, POE::Component::MessageQueue::Storage::Complex, POE::Component::MessageQueue::Storage::Default

syntax highlighting: