Class: Announce::Adapters::ShoryukenAdapter::Topic

Inherits:
BaseAdapter::Topic show all
Defined in:
lib/announce/adapters/shoryuken_adapter.rb

Instance Attribute Summary

Attributes inherited from BaseAdapter::Destination

#action, #options, #subject

Instance Method Summary collapse

Methods inherited from BaseAdapter::Destination

app, delimiter, #initialize, #name, name_for, namespace, prefix

Constructor Details

This class inherits a constructor from Announce::Adapters::BaseAdapter::Destination

Instance Method Details

#arnObject



127
128
129
130
131
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 127

def arn
   = Shoryuken::Client.
  region = sns.config[:region]
  "arn:aws:sns:#{region}:#{}:#{name}"
end

#createObject



97
98
99
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 97

def create
  sns.create_topic(name: name)[:topic_arn]
end

#publish(message, options = {}) ⇒ Object



93
94
95
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 93

def publish(message, options = {})
  Shoryuken::Client.topics(name).send_message(message, options)
end

#snsObject



133
134
135
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 133

def sns
  Shoryuken::Client.sns
end

#subscribe(queue) ⇒ Object



113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 113

def subscribe(queue)
  subscription_arn =
    sns.subscribe(topic_arn: arn, protocol: "sqs", endpoint: queue.arn)[
      :subscription_arn
    ]

  sns.set_subscription_attributes(
    subscription_arn: subscription_arn,
    attribute_name: "RawMessageDelivery",
    attribute_value: "true"
  )
  subscription_arn
end

#verifyObject



101
102
103
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 101

def verify
  Announce.logger.warn("Verify SNS Topic: #{arn}")
end

#verify_subscription(queue) ⇒ Object



105
106
107
108
109
110
111
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 105

def verify_subscription(queue)
  Announce.logger.warn(
    "Verify Subscription:\n"\
    "  from SNS Topic: #{arn}\n"\
    "  to SQS Queue: #{queue.arn}"
  )
end