class CrossServiceMessenger::Client
Client
for send/pull messages from AWS SQS.
Constants
- SEMAPHORE
Attributes
app[R]
App name
Public Class Methods
client()
click to toggle source
Public: Get AWS SQS client.
@return [Aws::SQS::Client] the client.
# File lib/cross_service_messenger/client.rb, line 45 def client @client ||= Aws::SQS::Client.new(access_key_id: CrossServiceMessenger.aws_access_key_id, secret_access_key: CrossServiceMessenger.aws_secret_access_key, region: CrossServiceMessenger.aws_region) end
new(app)
click to toggle source
Public: Constructor.
@param app [Symbol] the app name.
# File lib/cross_service_messenger/client.rb, line 15 def initialize(app) @app = app end
queue_urls()
click to toggle source
Public: Get AWS SQS queue urls
@return [Hash<Symbol, String>] the queue urls.
# File lib/cross_service_messenger/client.rb, line 38 def queue_urls @queue_urls ||= {} end
Public Instance Methods
pull() { |body| ... }
click to toggle source
Public: Pull messages from app.
# File lib/cross_service_messenger/client.rb, line 27 def pull poller = Aws::SQS::QueuePoller.new(queue_url, client: self.class.client) poller.poll(idle_timeout: 5, wait_time_seconds: 5) do |msg| yield msg.body end end
send_message(message_body)
click to toggle source
Public: Send message.
@param message_body [String] the message.
# File lib/cross_service_messenger/client.rb, line 22 def send_message(message_body) self.class.client.send_message(queue_url: queue_url, message_body: message_body) end
Private Instance Methods
queue_name()
click to toggle source
Private: Get queue name.
@return [String] the queue name.
# File lib/cross_service_messenger/client.rb, line 68 def queue_name @queue_name ||= CrossServiceMessenger.queue_names.fetch(app) end
queue_url()
click to toggle source
Private: Get queue URL.
@return [String] the queue URL.
# File lib/cross_service_messenger/client.rb, line 57 def queue_url @queue_url ||= begin SEMAPHORE.synchronize do self.class.queue_urls[app] ||= self.class.client.get_queue_url(queue_name: queue_name).queue_url end end end