eventq_aws 1.10.1 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|