Class: Toiler::Gcp::Queue

Inherits:
Object
  • Object
show all
Defined in:
lib/toiler/gcp/queue.rb

Overview

GCP PubSub Queue abstraction Provides methods for querying and acting on a PubSub queue

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, client) ⇒ Queue

Returns a new instance of Queue.



12
13
14
15
# File 'lib/toiler/gcp/queue.rb', line 12

def initialize(name, client)
  @name = name
  @subscription = client.subscription name, skip_lookup: true
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



10
11
12
# File 'lib/toiler/gcp/queue.rb', line 10

def name
  @name
end

#subscriptionObject

Returns the value of attribute subscription.



10
11
12
# File 'lib/toiler/gcp/queue.rb', line 10

def subscription
  @subscription
end

Instance Method Details

#ack_deadlineObject



17
18
19
# File 'lib/toiler/gcp/queue.rb', line 17

def ack_deadline
  subscription.deadline
end

#delete_messages(messages) ⇒ Object



21
22
23
# File 'lib/toiler/gcp/queue.rb', line 21

def delete_messages(messages)
  subscription.acknowledge(messages)
end

#max_messagesObject



25
26
27
28
# File 'lib/toiler/gcp/queue.rb', line 25

def max_messages
  # pubsub limit is 1000, but it makes little sense to pull so many messages at once
  100
end

#receive_messages(wait: nil, max_messages: nil) ⇒ Object



30
31
32
33
34
# File 'lib/toiler/gcp/queue.rb', line 30

def receive_messages(wait: nil, max_messages: nil)
  immediate = wait.nil? || wait.zero?
  subscription.pull(immediate: immediate, max: max_messages)
              .map { |m| Message.new(m) }
end