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.wait!

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 = Hash[attributes.map { |k, v| [String(k), String(v)] }]

  @grpc = Google::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
86
# File 'lib/google/cloud/pubsub/message.rb', line 82

def attributes
  return @grpc.attributes.to_h if @grpc.attributes.respond_to? :to_h
  # Enumerable doesn't have to_h on Ruby 2.0, so fallback to this
  Hash[@grpc.attributes.to_a]
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.



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

def message_id
  @grpc.message_id
end

#published_atObject Also known as: publish_time

The time at which the message was published.



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

def published_at
  Convert.timestamp_to_time @grpc.publish_time
end