Class: Google::Cloud::PubSub::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/google/cloud/pubsub/message.rb

Overview

Message

Represents a Pub/Sub Message.

Message objects are created by Topic#publish. Subscription#pull returns an array of ReceivedMessage objects, each of which contains a Message object. Each ReceivedMessage object can be acknowledged and/or delayed.

Examples:

require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

# Publish a message
topic = pubsub.topic "my-topic"
message = topic.publish "task completed"
message.data #=> "task completed"

# Listen for messages
sub = pubsub.subscription "my-topic-sub"
subscriber = sub.listen do |received_message|
  # process message
  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!

Instance Method Summary collapse

Constructor Details

#initialize(data = nil, attributes = {}) ⇒ Message

Create an empty Message object. This can be used to publish several messages in bulk.



63
64
65
66
67
68
69
70
71
# File 'lib/google/cloud/pubsub/message.rb', line 63

def initialize data = nil, attributes = {}
  # Convert attributes to strings to match the protobuf definition
  attributes = attributes.to_h { |k, v| [String(k), String(v)] }

  @grpc = Google::Cloud::PubSub::V1::PubsubMessage.new(
    data:       String(data).dup.force_encoding(Encoding::ASCII_8BIT),
    attributes: attributes
  )
end

Instance Method Details

#attributesObject

Optional attributes for the message.



82
83
84
85
# File 'lib/google/cloud/pubsub/message.rb', line 82

def attributes
  return @grpc.attributes.to_h if @grpc.attributes.respond_to? :to_h
  @grpc.attributes.to_a.to_h
end

#dataObject

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



76
77
78
# File 'lib/google/cloud/pubsub/message.rb', line 76

def data
  @grpc.data
end

#message_idObject Also known as: msg_id

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



90
91
92
# File 'lib/google/cloud/pubsub/message.rb', line 90

def message_id
  @grpc.message_id
end

#ordering_keyString

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)


120
121
122
# File 'lib/google/cloud/pubsub/message.rb', line 120

def ordering_key
  @grpc.ordering_key
end

#published_atObject Also known as: publish_time

The time at which the message was published.



97
98
99
# File 'lib/google/cloud/pubsub/message.rb', line 97

def published_at
  Convert.timestamp_to_time @grpc.publish_time
end