class Realm::SNS::Gateway
Public Class Methods
new(topic_arn:, queue_prefix: nil, event_processing_attempts: 3, **)
click to toggle source
Calls superclass method
# File lib/realm/sns/gateway.rb, line 8 def initialize(topic_arn:, queue_prefix: nil, event_processing_attempts: 3, **) super @topic = TopicAdapter.new(topic_arn) @queue_prefix = queue_prefix @event_processing_attempts = event_processing_attempts @queue_map = {} end
Public Instance Methods
add_listener(event_type, listener, queue_arn: nil)
click to toggle source
# File lib/realm/sns/gateway.rb, line 16 def add_listener(event_type, listener, queue_arn: nil) queue = queue_arn ? queue_manager.get(arn: queue_arn) : provide_queue(event_type, listener) @queue_map[queue] = listener end
queues()
click to toggle source
# File lib/realm/sns/gateway.rb, line 35 def queues @queue_map.keys end
trigger(event_type, attributes = {})
click to toggle source
# File lib/realm/sns/gateway.rb, line 21 def trigger(event_type, attributes = {}) create_event(event_type, attributes).tap { |event| @topic.publish(event_type, event.to_json) } end
worker(**options)
click to toggle source
# File lib/realm/sns/gateway.rb, line 25 def worker(**options) @worker ||= Worker.new( @queue_map, event_factory: @event_factory, logger: @runtime && @runtime.context[:logger], event_processing_attempts: @event_processing_attempts, **options, ) end
Private Instance Methods
provide_queue(event_type, listener)
click to toggle source
# File lib/realm/sns/gateway.rb, line 41 def provide_queue(event_type, listener) queue_name = [event_type.to_s.gsub('.', '_'), queue_suffix(listener)].join('-') queue = queue_manager.provide(queue_name) @topic.subscribe(event_type, queue) queue end
queue_manager()
click to toggle source
# File lib/realm/sns/gateway.rb, line 48 def queue_manager @queue_manager ||= QueueManager.new(prefix: @queue_prefix) end
queue_suffix(listener)
click to toggle source
# File lib/realm/sns/gateway.rb, line 52 def queue_suffix(listener) listener.try(:identifier) || SecureRandom.alphanumeric(16) end