eventq_aws 1.10.1 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/eventq_aws/aws_eventq_client.rb +55 -13
- data/lib/eventq_aws/aws_queue_client.rb +16 -11
- data/lib/eventq_aws/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f86e0b35df950bc3ab6b05753d8b9f449b20f630
|
4
|
+
data.tar.gz: e903aa7f02342867df1acbd2c7bfa294256073c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5becb16f4540aca989f9e23e8814cafdd8f7b5285c8f3b695faa322e32d6381ab0900a9d1148aa36a77f5d0ebdb9fb3ad48cf2a46fa3f8d85c4c1a07ab151cce
|
7
|
+
data.tar.gz: ca7d4bd6bc9c84b8009a0ef0d58f68e86562eb52f56d683b8717b2c32df3df59bc1e8f927313f400594ff2f9ff5d8fc133dd8ff4a6bbff100104a0c7bd5ace6b
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module EventQ
|
2
2
|
module Amazon
|
3
|
+
# Implements a general interface to raise an event
|
4
|
+
# EventQ::RabbitMq::EventQClient is the sister-class which does the same for RabbitMq
|
3
5
|
class EventQClient
|
4
6
|
|
5
7
|
def initialize(options)
|
@@ -13,12 +15,54 @@ module EventQ
|
|
13
15
|
@serialization_manager = EventQ::SerializationProviders::Manager.new
|
14
16
|
@signature_manager = EventQ::SignatureProviders::Manager.new
|
15
17
|
|
18
|
+
#this array is used to record known event types
|
19
|
+
@known_event_types = []
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
def registered?(event_type)
|
24
|
+
@known_event_types.include?(event_type)
|
25
|
+
end
|
26
|
+
|
27
|
+
def register_event(event_type)
|
28
|
+
if registered?(event_type)
|
29
|
+
return true
|
30
|
+
end
|
31
|
+
|
32
|
+
@client.create_topic_arn(event_type)
|
33
|
+
@known_event_types << event_type
|
34
|
+
true
|
16
35
|
end
|
17
36
|
|
18
37
|
def raise_event(event_type, event)
|
38
|
+
register_event(event_type)
|
39
|
+
|
40
|
+
with_prepared_message(event_type, event) do |message|
|
41
|
+
@client.sns.publish(
|
42
|
+
topic_arn: topic_arn(event_type),
|
43
|
+
message: message,
|
44
|
+
subject: event_type
|
45
|
+
)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def raise_event_in_queue(event_type, event, queue, delay)
|
50
|
+
with_prepared_message(event_type, event) do |message|
|
51
|
+
@client.sqs.send_message(
|
52
|
+
queue_url: @client.get_queue_url(queue),
|
53
|
+
message_body: message,
|
54
|
+
delay_seconds: delay
|
55
|
+
)
|
56
|
+
end
|
57
|
+
end
|
19
58
|
|
20
|
-
|
59
|
+
def new_message
|
60
|
+
EventQ::QueueMessage.new
|
61
|
+
end
|
21
62
|
|
63
|
+
private
|
64
|
+
|
65
|
+
def with_prepared_message(event_type, event)
|
22
66
|
qm = new_message
|
23
67
|
qm.content = event
|
24
68
|
qm.type = event_type
|
@@ -28,26 +72,24 @@ module EventQ
|
|
28
72
|
qm.signature = provider.write(message: qm, secret: EventQ::Configuration.signature_secret)
|
29
73
|
end
|
30
74
|
|
31
|
-
|
32
|
-
|
33
|
-
message = serialization_provider.serialize(qm)
|
75
|
+
message = serialized_message(qm)
|
34
76
|
|
35
|
-
response =
|
36
|
-
topic_arn: topic_arn,
|
37
|
-
message: message,
|
38
|
-
subject: event_type
|
39
|
-
})
|
77
|
+
response = yield(message)
|
40
78
|
|
41
79
|
EventQ.log(:debug, "[#{self.class}] - Raised event. Message: #{message} | Type: #{event_type}.")
|
42
80
|
|
43
|
-
|
44
|
-
|
81
|
+
response.message_id
|
45
82
|
end
|
46
83
|
|
47
|
-
def
|
48
|
-
EventQ::
|
84
|
+
def serialized_message(queue_message)
|
85
|
+
serialization_provider = @serialization_manager.get_provider(EventQ::Configuration.serialization_provider)
|
86
|
+
|
87
|
+
serialization_provider.serialize(queue_message)
|
49
88
|
end
|
50
89
|
|
90
|
+
def topic_arn(event_type)
|
91
|
+
@client.get_topic_arn(event_type)
|
92
|
+
end
|
51
93
|
end
|
52
94
|
end
|
53
95
|
end
|
@@ -2,11 +2,7 @@ module EventQ
|
|
2
2
|
module Amazon
|
3
3
|
class QueueClient
|
4
4
|
|
5
|
-
attr_reader :sns
|
6
|
-
attr_reader :sqs
|
7
|
-
|
8
5
|
def initialize(options = {})
|
9
|
-
|
10
6
|
if options.has_key?(:aws_key)
|
11
7
|
Aws.config[:credentials] = Aws::Credentials.new(options[:aws_key], options[:aws_secret])
|
12
8
|
end
|
@@ -23,10 +19,16 @@ module EventQ
|
|
23
19
|
else
|
24
20
|
@aw_region = Aws.config[:region]
|
25
21
|
end
|
22
|
+
end
|
26
23
|
|
27
|
-
|
28
|
-
|
24
|
+
# Returns the AWS SQS Client
|
25
|
+
def sqs
|
26
|
+
@sqs ||= Aws::SQS::Client.new
|
27
|
+
end
|
29
28
|
|
29
|
+
# Returns the AWS SNS Client
|
30
|
+
def sns
|
31
|
+
@sns ||= Aws::SNS::Client.new
|
30
32
|
end
|
31
33
|
|
32
34
|
def get_topic_arn(event_type)
|
@@ -41,16 +43,19 @@ module EventQ
|
|
41
43
|
|
42
44
|
def create_topic_arn(event_type)
|
43
45
|
_event_type = EventQ.create_event_type(event_type)
|
44
|
-
response =
|
46
|
+
response = sns.create_topic(name: aws_safe_name(_event_type))
|
45
47
|
return response.topic_arn
|
46
48
|
end
|
47
49
|
|
50
|
+
# Returns the URL of the queue. The queue will be created when it does
|
51
|
+
#
|
52
|
+
# @param queue [EventQ::Queue]
|
48
53
|
def get_queue_url(queue)
|
49
54
|
_queue_name = EventQ.create_queue_name(queue.name)
|
50
|
-
response=
|
51
|
-
|
52
|
-
|
53
|
-
|
55
|
+
response= sqs.get_queue_url(
|
56
|
+
queue_name: aws_safe_name(_queue_name),
|
57
|
+
queue_owner_aws_account_id: @aws_account,
|
58
|
+
)
|
54
59
|
return response.queue_url
|
55
60
|
end
|
56
61
|
|
data/lib/eventq_aws/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eventq_aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vaughanbrittonsage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|