def pull(self, return_immediately=False, max_messages=1, client=None): """API call: retrieve messages for the subscription. See: https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions/pull Example: .. literalinclude:: pubsub_snippets.py :start-after: [START subscription_pull] :end-before: [END subscription_pull] :type return_immediately: bool :param return_immediately: if True, the back-end returns even if no messages are available; if False, the API call blocks until one or more messages are available. :type max_messages: int :param max_messages: the maximum number of messages to return. :type client: :class:`~google.cloud.pubsub.client.Client` or ``NoneType`` :param client: the client to use. If not passed, falls back to the ``client`` stored on the current subscription's topic. :rtype: list of (ack_id, message) tuples :returns: sequence of tuples: ``ack_id`` is the ID to be used in a subsequent call to :meth:`acknowledge`, and ``message`` is an instance of :class:`~google.cloud.pubsub.message.Message`. """ client = self._require_client(client) api = client.subscriber_api response = api.subscription_pull(self.full_name, return_immediately, max_messages) return [(info['ackId'], Message.from_api_repr(info['message'])) for info in response]
def pull(self, return_immediately=False, max_messages=1, client=None): """API call: retrieve messages for the subscription. See: https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions/pull Example: .. literalinclude:: pubsub_snippets.py :start-after: [START subscription_pull] :end-before: [END subscription_pull] :type return_immediately: bool :param return_immediately: if True, the back-end returns even if no messages are available; if False, the API call blocks until one or more messages are available. :type max_messages: int :param max_messages: the maximum number of messages to return. :type client: :class:`~google.cloud.pubsub.client.Client` or ``NoneType`` :param client: the client to use. If not passed, falls back to the ``client`` stored on the current subscription's topic. :rtype: list of (ack_id, message) tuples :returns: sequence of tuples: ``ack_id`` is the ID to be used in a subsequent call to :meth:`acknowledge`, and ``message`` is an instance of :class:`~google.cloud.pubsub.message.Message`. """ client = self._require_client(client) api = client.subscriber_api response = api.subscription_pull( self.full_name, return_immediately, max_messages) return [(info['ackId'], Message.from_api_repr(info['message'])) for info in response]
def test_parse_json_message(): attributes = { 'eventType': 'OBJECT_FINALIZE', 'bucketId': 'mybucket', 'objectId': 'myobject', 'objectGeneration': 1234567, 'resource': 'projects/_/buckets/mybucket/objects/myobject#1234567', 'notificationConfig': ('projects/_/buckets/mybucket/' 'notificationConfigs/5'), 'payloadFormat': 'JSON_API_V1'} data = ('{' ' "size": 12345,' ' "contentType": "text/html",' ' "metageneration": 1' '}') message = Message(data, MESSAGE_ID, attributes=attributes) assert summarize(message) == ( '\tEvent type: OBJECT_FINALIZE\n' '\tBucket ID: mybucket\n' '\tObject ID: myobject\n' '\tGeneration: 1234567\n' '\tContent type: text/html\n' '\tSize: 12345\n' '\tMetageneration: 1\n')