diff options
author | Eugene Crosser <crosser@average.org> | 2010-03-29 15:25:57 +0400 |
---|---|---|
committer | Brion Vibber <brion@pobox.com> | 2010-03-29 15:31:43 -0700 |
commit | bd1363c17abf9686a6104fac7d62df3b044f87e9 (patch) | |
tree | ecea0296b6bd3945c12907d0d342a4faf9e7ecf7 | |
parent | 873b8328272ae9cb189477fd10e75b16d5ce050e (diff) |
Make stomp queue manager work with basic servers
Signed-off-by: Eugene Crosser <crosser@average.org>
-rw-r--r-- | README | 6 | ||||
-rw-r--r-- | lib/stompqueuemanager.php | 19 |
2 files changed, 18 insertions, 7 deletions
@@ -970,6 +970,12 @@ max_retries: for stomp, drop messages after N failed attempts to process. dead_letter_dir: for stomp, optional directory to dump data on failed queue processing events after discarding them. +stomp_no_transactions: for stomp, the server does not support transactions, + so do not try to user them. This is needed for http://www.morbidq.com/. + +stomp_no_acks: for stomp, the server does not support acknowledgements. + so do not try to user them. This is needed for http://www.morbidq.com/. + license ------- diff --git a/lib/stompqueuemanager.php b/lib/stompqueuemanager.php index 9af8b2f48..4d9f39791 100644 --- a/lib/stompqueuemanager.php +++ b/lib/stompqueuemanager.php @@ -39,7 +39,8 @@ class StompQueueManager extends QueueManager protected $base; protected $control; - protected $useTransactions = true; + protected $useTransactions; + protected $useAcks; protected $sites = array(); protected $subscriptions = array(); @@ -64,6 +65,8 @@ class StompQueueManager extends QueueManager $this->base = common_config('queue', 'queue_basename'); $this->control = common_config('queue', 'control_channel'); $this->breakout = common_config('queue', 'breakout'); + $this->useTransactions = !common_config('queue', 'stomp_no_transactions'); + $this->useAcks = !common_config('queue', 'stomp_no_acks'); } /** @@ -703,13 +706,15 @@ class StompQueueManager extends QueueManager protected function ack($idx, $frame) { - if ($this->useTransactions) { - if (empty($this->transaction[$idx])) { - throw new Exception("Tried to ack but not in a transaction"); + if ($this->useAcks) { + if ($this->useTransactions) { + if (empty($this->transaction[$idx])) { + throw new Exception("Tried to ack but not in a transaction"); + } + $this->cons[$idx]->ack($frame, $this->transaction[$idx]); + } else { + $this->cons[$idx]->ack($frame); } - $this->cons[$idx]->ack($frame, $this->transaction[$idx]); - } else { - $this->cons[$idx]->ack($frame); } } |