eventhub-processor 0.0.1 → 0.0.2

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 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