NAME
POE::Component::MessageQueue::Storage::BigMemory -- In-memory storage engine optimized for a large number of messages.
SYNOPSIS
use POE;
use POE::Component::MessageQueue;
use POE::Component::MessageQueue::Storage::BigMemory;
use strict;
POE::Component::MessageQueue->new({
storage => POE::Component::MessageQueue::Storage::BigMemory->new()
});
POE::Kernel->run();
exit;
DESCRIPTION
An in-memory storage engine that is optimised for a large number of messages. Its an alternative to POE::Componenent::MessageQueue::Storage::Memory, which stores everything in a Perl ARARY, which can slow the MQ to a CRAWL when the number of messsages in this store gets big.
store() is a little bit slower per message in this module and it uses more memory per message. Everything else should be considerably more efficient, though, especially when the number of messages starts to climb. Many operations in Storage::Memory are O(n*n). Most operations in this module are O(1)!
I wouldn't suggest using this as your main storage engine because if messages aren't removed by consumers, it will continue to consume more memory until it explodes. Check-out POE::Component::MessageQueue::Storage::Complex which can use this module internally to keep messages in memory for a period of time before moving them into persistent storage.
CONSTRUCTOR PARAMETERS
None to speak of!
SUPPORTED STOMP HEADERS
- persistent
-
Ignored. Nothing is persistent in this store.
- expire-after
-
Ignored. All messages are kept until handled.
- deliver-after
-
Fully Supported.
SEE ALSO
POE::Component::MessageQueue, POE::Component::MessageQueue::Storage
Other storage engines:
POE::Component::MessageQueue::Storage::Memory, 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::Throttled, POE::Component::MessageQueue::Storage::Complex, POE::Component::MessageQueue::Storage::Default