'Try to retrieve multiple messages off ``queue``.
Where :meth:`_get` returns a single Payload object, this method
returns a list of Payload objects.  The number of objects returned
is determined by the total number of messages available in the queue
and the number of messages the QoS object allows (based on the
prefetch_count).
Note:
Ignores QoS limits so caller is responsible for checking
that we are allowed to consume at least one message from the
queue.  get_bulk will then ask QoS for an estimate of
the number of extra messages that we can consume.
Arguments:
queue (str): The queue name to pull from.
Returns:
List[Message]'

def _get_bulk(self, queue, max_if_unlimited=SQS_MAX_MESSAGES, callback=None):

    max_count = self._get_message_estimate()
    if max_count:
        q_url = self._new_queue(queue)
        resp = self.sqs.receive_message(QueueUrl=q_url, MaxNumberOfMessages=max_count, WaitTimeSeconds=self.wait_time_seconds)
        if resp.get(u'Messages'):
            for m in resp[u'Messages']:
                m[u'Body'] = AsyncMessage(body=m[u'Body']).decode()
            for msg in self._messages_to_python(resp[u'Messages'], queue):
                self.connection._deliver(msg, queue)
            return
    raise Empty()
