Not sure if this is better than adding checks to the other AcknowledgementHandlers.
As an aside, would the message handling / acknowledgement handling be better split out into their own interfaces. The current Handlers are sort of doing 2 things.
interface MessageHandler {
public function handle(Iterator $messages, AdapterInterface $adapter, AcknowledgerInterface $acknowledger, callable $worker);
}
class DefaultHandler implements MessageHandler {
public function handle(Iterator $messages, AdapterInterface $adapter, AcknowledgmentInterface $acknowledger, callable $worker) {
// Used to break from polling consumer
$break = false;
$done = function () use (&$break) {
$break = true;
};
try {
foreach ($messages as $message) {
if ($message->isValid()) {
$result = call_user_func($worker, $message, $done);
$acknowledger->acknowledge($message, $adapter, $result);
}
if ($break) {
break;
}
}
} catch (Exception $e) {
$acknowledger->flush($adapter);
throw $e;
}
$this->flush($adapter);
}
}
interface AcknowledgmentInterface {
public function acknowledge($message, $adapter, $result);
public function flush($adapter);
}
Resolves: #23
Not sure if this is better than adding checks to the other
AcknowledgementHandlers
.As an aside, would the message handling / acknowledgement handling be better split out into their own interfaces. The current Handlers are sort of doing 2 things.