/**
  * Fetch messages from the queue within the store scope.
  * @param string $queue Name of the AMQP queue
  * @param Mage_Core_Model_Store $store
  * @return self
  */
 protected function _consumeQueue($queue, Mage_Core_Model_Store $store)
 {
     $sdk = $this->_helper->getSdkAmqp($queue, $store);
     $payloads = $sdk->fetch();
     // avoid use of foreach to allow exception handling during Current
     while ($payloads->valid()) {
         try {
             $payload = $payloads->current();
         } catch (Exception\Payload $e) {
             // log and skip over any messages that cannot be handled by the SDK
             $logData = ['queue' => $queue, 'error_message' => $e->getMessage()];
             $logMessage = 'Received bad payload on queue {queue}: {error_message}';
             $this->_logger->warning($logMessage, $this->_context->getMetaData(__CLASS__, $logData, $e));
             $payloads->next();
             continue;
         }
         $this->_dispatchPayload($payload, $store);
         $payloads->next();
     }
     return $this;
 }
 /**
  * Validate the hostname, username and password all appear valid.
  * @param string $hostname
  * @param string $username
  * @param string $password
  * @throws EbayEnterprise_Amqp_Exception_Connection_Exception
  * @return self
  */
 protected function _validateConnection($hostname, $username, $password)
 {
     $queues = $this->_helper->getConfigModel($this->_store)->queueNames;
     if (!$queues) {
         throw Mage::exception('EbayEnterprise_Amqp_Exception_Configuration', $this->_helper->__(self::NO_QUEUES_CONFIGURED));
     }
     // try to connect using the first configured queue - which one it is doesn't
     // matter much as no messages will be consumed
     $amqpApi = $this->_helper->getSdkAmqp(current($queues), $this->_store, $hostname, $username, $password);
     try {
         $amqpApi->openConnection();
     } catch (ConnectionError $e) {
         $logData = ['error_message' => $e->getMessage()];
         $logMessage = 'Failed to connect to AMQP server with message: {error_message}';
         $this->_logger->warning($logMessage, $this->_context->getMetaData(__CLASS__, $logData, $e));
     }
     if (!$amqpApi->isConnected()) {
         throw Mage::exception('EbayEnterprise_Amqp_Exception_Connection', $this->_helper->__(self::CONNECTION_FAILED));
     }
     return $this;
 }