Cloud Pub/Sub API - Class Google::Cloud::PubSub::ReceivedMessage (v2.10.0)

Reference documentation and code samples for the Cloud Pub/Sub API class Google::Cloud::PubSub::ReceivedMessage.

ReceivedMessage

Represents a Pub/Sub Message that can be acknowledged or delayed.

Inherits

  • Object

Example

require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

sub = pubsub.subscription "my-topic-sub"
subscriber = sub.listen do |received_message|
  puts received_message.message.data
  received_message.acknowledge!
end

# Start background threads that will call the block passed to listen.
subscriber.start

# Shut down the subscriber when ready to stop receiving messages.
subscriber.stop!

Methods

#ack!

def ack!()
Alias Of: #acknowledge!

Acknowledges receipt of the message.

Example
require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

sub = pubsub.subscription "my-topic-sub"
subscriber = sub.listen do |received_message|
  puts received_message.message.data

  received_message.acknowledge!
end

# Start background threads that will call block passed to listen.
subscriber.start

# Shut down the subscriber when ready to stop receiving messages.
subscriber.stop!

#ack_id

def ack_id()

The acknowledgment ID for the message.

#acknowledge!

def acknowledge!()
Aliases

Acknowledges receipt of the message.

Example
require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

sub = pubsub.subscription "my-topic-sub"
subscriber = sub.listen do |received_message|
  puts received_message.message.data

  received_message.acknowledge!
end

# Start background threads that will call block passed to listen.
subscriber.start

# Shut down the subscriber when ready to stop receiving messages.
subscriber.stop!

#attributes

def attributes()

Optional attributes for the received message.

#data

def data()

The received message payload. This data is a list of bytes encoded as ASCII-8BIT.

#delivery_attempt

def delivery_attempt() -> Integer, nil

Returns the delivery attempt counter for the message. If a dead letter policy is not set on the subscription, this will be nil. See Topic#subscribe, Subscription#dead_letter_topic= and Subscription#dead_letter_max_delivery_attempts=.

The delivery attempt counter is 1 + (the sum of number of NACKs and number of ack_deadline exceeds) for the message.

A NACK is any call to ModifyAckDeadline with a 0 deadline. An ack_deadline exceeds event is whenever a message is not acknowledged within ack_deadline. Note that ack_deadline is initially Subscription.ackDeadlineSeconds, but may get extended automatically by the client library.

The first delivery of a given message will have this value as 1. The value is calculated at best effort and is approximate.

Returns
  • (Integer, nil) — A delivery attempt value of 1 or greater, or nil if a dead letter policy is not set on the subscription.
Example
require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

topic = pubsub.topic "my-topic"
dead_letter_topic = pubsub.topic "my-dead-letter-topic", skip_lookup: true
sub = topic.subscribe "my-topic-sub",
                      dead_letter_topic: dead_letter_topic,
                      dead_letter_max_delivery_attempts: 10

subscriber = sub.listen do |received_message|
  puts received_message.message.delivery_attempt
end

#ignore!

def ignore!()
Alias Of: #reject!

Resets the acknowledge deadline for the message without acknowledging it.

This will make the message available for redelivery.

Example
require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

sub = pubsub.subscription "my-topic-sub"
subscriber = sub.listen do |received_message|
  puts received_message.message.data

  # Release message back to the API.
  received_message.reject!
end

# Start background threads that will call block passed to listen.
subscriber.start

# Shut down the subscriber when ready to stop receiving messages.
subscriber.stop!

#message

def message()
Aliases

The received message.

#message_id

def message_id()
Aliases

The ID of the received message, assigned by the server at publication time. Guaranteed to be unique within the topic.

#modify_ack_deadline!

def modify_ack_deadline!(new_deadline)

Modifies the acknowledge deadline for the message.

This indicates that more time is needed to process the message, or to make the message available for redelivery.

Parameter
  • new_deadline (Integer) — The new ack deadline in seconds from the time this request is sent to the Pub/Sub system. Must be >= 0. For example, if the value is 10, the new ack deadline will expire 10 seconds after the call is made. Specifying 0 may immediately make the message available for another pull request.
Example
require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

sub = pubsub.subscription "my-topic-sub"
subscriber = sub.listen do |received_message|
  puts received_message.message.data

  # Delay for 2 minutes
  received_message.modify_ack_deadline! 120
end

# Start background threads that will call block passed to listen.
subscriber.start

# Shut down the subscriber when ready to stop receiving messages.
subscriber.stop!

#msg

def msg()
Alias Of: #message

The received message.

#msg_id

def msg_id()
Alias Of: #message_id

The ID of the received message, assigned by the server at publication time. Guaranteed to be unique within the topic.

#nack!

def nack!()
Alias Of: #reject!

Resets the acknowledge deadline for the message without acknowledging it.

This will make the message available for redelivery.

Example
require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

sub = pubsub.subscription "my-topic-sub"
subscriber = sub.listen do |received_message|
  puts received_message.message.data

  # Release message back to the API.
  received_message.reject!
end

# Start background threads that will call block passed to listen.
subscriber.start

# Shut down the subscriber when ready to stop receiving messages.
subscriber.stop!

#ordering_key

def ordering_key() -> String

Identifies related messages for which publish order should be respected.

Google Cloud Pub/Sub ordering keys provide the ability to ensure related messages are sent to subscribers in the order in which they were published. Messages can be tagged with an ordering key, a string that identifies related messages for which publish order should be respected. The service guarantees that, for a given ordering key and publisher, messages are sent to subscribers in the order in which they were published. Ordering does not require sacrificing high throughput or scalability, as the service automatically distributes messages for different ordering keys across subscribers.

See Topic#publish_async and Subscription#listen.

Returns
  • (String)

#publish_time

def publish_time()
Alias Of: #published_at

The time at which the message was published.

#published_at

def published_at()
Aliases

The time at which the message was published.

#reject!

def reject!()
Aliases

Resets the acknowledge deadline for the message without acknowledging it.

This will make the message available for redelivery.

Example
require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

sub = pubsub.subscription "my-topic-sub"
subscriber = sub.listen do |received_message|
  puts received_message.message.data

  # Release message back to the API.
  received_message.reject!
end

# Start background threads that will call block passed to listen.
subscriber.start

# Shut down the subscriber when ready to stop receiving messages.
subscriber.stop!