Class: Gcloud::Pubsub::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/gcloud/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 "gcloud"

gcloud = Gcloud.new
pubsub = gcloud.pubsub

# Publish a message
topic = pubsub.topic "my-topic"
message = topic.publish "new-message"
puts message.data #=>  "new-message"

# Pull a message
sub = pubsub.subscription "my-topic-sub"
received_message = sub.pull.first
puts received_message.message.data #=>  "new-message"

Instance Attribute Summary collapse

Class Method Summary collapse

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.



54
55
56
57
58
59
60
61
# File 'lib/gcloud/pubsub/message.rb', line 54

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).encode("ASCII-8BIT"),
    attributes: attributes)
end

Instance Attribute Details

#grpcObject



49
50
51
# File 'lib/gcloud/pubsub/message.rb', line 49

def grpc
  @grpc
end

Class Method Details

.from_grpc(grpc) ⇒ Object



87
88
89
90
91
92
93
# File 'lib/gcloud/pubsub/message.rb', line 87

def self.from_grpc grpc
  new.tap do |m|
    m.instance_eval do
      @grpc = grpc
    end
  end
end

Instance Method Details

#attributesObject

The received attributes.



71
72
73
74
75
# File 'lib/gcloud/pubsub/message.rb', line 71

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 received data.



65
66
67
# File 'lib/gcloud/pubsub/message.rb', line 65

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.



80
81
82
# File 'lib/gcloud/pubsub/message.rb', line 80

def message_id
  @grpc.message_id
end