eventhub-processor 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1d655c3ad766e679c042f39ba0b9959e9607fa11
4
- data.tar.gz: f0cf376227b402a5491ac3bc45ae10b4625aad89
3
+ metadata.gz: 06a1de3723da25c81697e5925cfd68ab79f9caa0
4
+ data.tar.gz: 50d6ec8c75afd1f001e41e3d1df67e99ca479efe
5
5
  SHA512:
6
- metadata.gz: b71cca2fbc7db9c483bd4cb689fb07efc61ca6409a21958c36a629198c5b1056ef3d26786ebb8edaa6aaeed3e2255a95e57449cf0af0e7f6a5269dd02da11f37
7
- data.tar.gz: cd85de1eee523df747f5f198e1c55f9b7fa8c655cb190e7f73e6fd175454b1305b5f62cb8efc8c619262d61d8717dfb5480cde9bcd0d7fb7581bc3e903ee6283
6
+ metadata.gz: 3c0ee52229f2c725e891ea4d29efaa42b0fccf356c18c053791ed67da28c508e35c7d7db3f44511dff5e86270a0f5db91ab473aec9850e32f98748a63f26f971
7
+ data.tar.gz: 5fb890baad3bbad02ba3d7cd01d5917bc0b18faf7e4d41964fafd6dfd4764b47e042a315b54dda32e17f9223854f1e7a7ec7318fc8730c3bc54859306b79ed5d
@@ -1,4 +1,5 @@
1
1
  require 'amqp'
2
+ require 'bunny'
2
3
  require 'rest-client'
3
4
  require 'json'
4
5
  require 'singleton'
@@ -41,30 +41,34 @@ module EventHub
41
41
 
42
42
  begin
43
43
  AMQP.start(configuration.get('server')) do |connection, open_ok|
44
+
45
+ @connection = connection
44
46
 
45
47
  # deal with tcp connection issues
46
- connection.on_tcp_connection_loss do |conn, settings|
48
+ @connection.on_tcp_connection_loss do |conn, settings|
47
49
  EventHub.logger.warn("Processor lost tcp connection. Trying to restart in 5 seconds...")
48
50
  sleep 5
49
51
  EventMachine.stop
50
52
  end
51
53
 
52
54
  # create channel
53
- channel = AMQP::Channel.new(connection)
54
- channel.auto_recovery = true
55
+ @channel = AMQP::Channel.new(@connection)
56
+ @channel.auto_recovery = true
55
57
 
56
58
  # connect to queue
57
- queue = channel.queue(configuration.get('processor.queue'), durable: true, auto_delete: false)
59
+ @queue = @channel.queue(queue_name, durable: true, auto_delete: false)
58
60
 
59
61
  # subscribe to queue
60
- queue.subscribe do |metadata, payload|
62
+ @queue.subscribe(:ack => true) do |metadata, payload|
61
63
  handle_heartbeat(payload)
62
- handle_message(metadata,payload)
64
+ if handle_message(metadata,payload)
65
+ metadata.ack
66
+ end
63
67
  end
64
68
 
65
69
  # Features to stop main event loop
66
70
  stop_main_loop = Proc.new {
67
- connection.disconnect {
71
+ @connection.disconnect {
68
72
  EventHub.logger.info("Processor is stopping main event loop")
69
73
  EventMachine.stop
70
74
  restart = false
@@ -79,8 +83,7 @@ module EventHub
79
83
  EventHub.logger.info("Processor is listening to queue [#{[configuration.get('server.vhost'),configuration.get('processor.queue')].compact.join(".")}]")
80
84
  end
81
85
  rescue => e
82
- EventHub.logger.error("Unexpected exception: #{e}. Trying to restart in 5 seconds...")
83
- sleep 5
86
+ EventHub.logger.error("Unexpected exception: #{e}")
84
87
  end
85
88
 
86
89
  end # while
@@ -123,16 +126,27 @@ module EventHub
123
126
  EventMachine.add_timer(watchdog_cycle) { watchdog }
124
127
  end
125
128
 
126
- def sent_to_dispatcher(payload)
127
- # send_connection = AMQP.connect({hostname: self.hostname, user: self.user, password: self.password, vhost: "event_hub"})
128
-
129
- # send_channel = AMQP::Channel.new(send_connection)
130
- # send_exchange = send_channel.direct("")
129
+ def send_to_dispatcher(payload)
130
+ confirmed = true
131
+
132
+ connection = Bunny.new({hostname: self.hostname, user: self.user, password: self.password, vhost: "event_hub"})
133
+ connection.start
134
+
135
+ channel = connection.create_channel
136
+ channel.confirm_select
137
+
138
+ channel.default_exchange.publish(payload,routing_key: 'inbound', persistent: true)
139
+ success = channel.wait_for_confirms
140
+
141
+ if !success
142
+ EventHub.logger.error("Message has not been confirmed by the server to be received !!!")
143
+ confirmed = false
144
+ end
145
+
146
+ channel.close
147
+ connection.close
131
148
 
132
- # send_exchange.publish payload, :routing_key => 'inbound'
133
-
134
- # send_channel.close
135
- # send_conncetion.close
149
+ confirmed
136
150
  end
137
151
 
138
152
  end
@@ -1,3 +1,3 @@
1
1
  module EventHub
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventhub-processor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Steiner
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bunny
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: Gem to build Event Hub processors
70
84
  email:
71
85
  - thomas.steiner@ikey.ch