eventbus 0.24 → 0.26

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,50 @@
1
+ require 'active_support/core_ext'
2
+
3
+ module EventBus
4
+
5
+ def self.set_up_logging
6
+ base_logdir = ENV['EVENTBUS_LOGDIR']
7
+
8
+ if base_logdir.nil?
9
+ base_logdir = File.join(ENV['HOME'], "logs", self.PROD_LEVEL, "eventbus", self.application_id)
10
+ end
11
+
12
+ FileUtils.mkdir_p(base_logdir) unless File.directory?(base_logdir)
13
+
14
+ filename = [File.basename($PROGRAM_NAME, File.extname($PROGRAM_NAME)), ".log"].join
15
+ logfile_path = File.join(base_logdir, filename)
16
+
17
+ shift_age = ENV['EVENTBUS_LOG_SHIFT_AGE'] || "daily"
18
+ shift_size = ENV['EVENTBUS_LOG_SHIFT_SIZE'] || 20971520 # 20MB
19
+
20
+ puts "Logging to #{logfile_path}."
21
+ self.logger = Logger.new(logfile_path, shift_age, shift_size)
22
+ logger.info "Logging initialized. Rotation age: #{shift_age} Rotation size: #{shift_size}"
23
+
24
+ end
25
+
26
+
27
+ # CONSTANTS
28
+
29
+ # True Constants
30
+ mattr_accessor :CORE_APPLICATION_ID
31
+ mattr_accessor :DEFAULT_APPLICATION_ID
32
+ mattr_accessor :DEFAULT_PROD_LEVEL
33
+
34
+ self.CORE_APPLICATION_ID = "EVENTBUS_CORE"
35
+ self.DEFAULT_APPLICATION_ID = self.CORE_APPLICATION_ID
36
+ self.DEFAULT_PROD_LEVEL = "development"
37
+
38
+ # Calculated Constants
39
+ mattr_accessor :PROD_LEVEL
40
+ self.PROD_LEVEL = ENV['EVENTBUS_PROD_LEVEL'] || self.DEFAULT_PROD_LEVEL
41
+
42
+ # VARIABLES
43
+
44
+ mattr_accessor :application_id
45
+ self.application_id = ENV['EVENTBUS_APPLICATION_ID'] || self.DEFAULT_APPLICATION_ID
46
+
47
+ mattr_accessor :logger
48
+ self.set_up_logging
49
+
50
+ end
@@ -0,0 +1,303 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'eventbus/common_init'
4
+
5
+ # This is taken almost directly from the Stomp gem's example
6
+ # logger, with minor modifications. Will work on customizing later.
7
+
8
+ # == Example STOMP call back logger class.
9
+ #
10
+ # Optional callback methods:
11
+ #
12
+ # * on_connecting: connection starting
13
+ # * on_connected: successful connect
14
+ # * on_connectfail: unsuccessful connect (will usually be retried)
15
+ # * on_disconnect: successful disconnect
16
+ #
17
+ # * on_miscerr: on miscellaneous xmit/recv errors
18
+ #
19
+ # * on_publish: publish called
20
+ # * on_subscribe: subscribe called
21
+ # * on_unsubscribe: unsubscribe called
22
+ #
23
+ # * on_begin: begin called
24
+ # * on_ack: ack called
25
+ # * on_nack: nack called
26
+ # * on_commit: commit called
27
+ # * on_abort: abort called
28
+ #
29
+ # * on_receive: receive called and successful
30
+ #
31
+ # * on_ssl_connecting: SSL connection starting
32
+ # * on_ssl_connected: successful SSL connect
33
+ # * on_ssl_connectfail: unsuccessful SSL connect (will usually be retried)
34
+ #
35
+ # * on_hbread_fail: unsuccessful Heartbeat read
36
+ # * on_hbwrite_fail: unsuccessful Heartbeat write
37
+ # * on_hbfire: on any send or receive heartbeat
38
+ #
39
+ # All methods are optional, at the user's requirements.
40
+ #
41
+ # If a method is not provided, it is not called (of course.)
42
+ #
43
+ # IMPORTANT NOTE: in general, call back logging methods *SHOULD* not raise exceptions,
44
+ # otherwise the underlying STOMP connection may fail in mysterious ways.
45
+ #
46
+ # There are two useful exceptions to this rule for:
47
+ #
48
+ # * on_connectfail
49
+ # * on_ssl_connectfail
50
+ #
51
+ # These two methods can raise a Stomp::Errors::LoggerConnectionError. If this
52
+ # exception is raised, it is passed up the chain to the caller.
53
+ #
54
+ # Callback parameters: are a copy of the @parameters instance variable for
55
+ # the Stomp::Connection.
56
+ #
57
+
58
+ module EventBus
59
+ module Connectors
60
+ module Stomp
61
+
62
+ class Slogger
63
+
64
+ # Initialize a new callback logger instance.
65
+ def initialize(init_parms = nil)
66
+ EventBus.logger.info("Logger is: #{EventBus.logger.inspect}")
67
+ EventBus.logger.info("Logger initialization complete.")
68
+ end
69
+
70
+ # Log connecting events
71
+ def on_connecting(parms)
72
+ begin
73
+ EventBus.logger.info "Connecting: #{info(parms)}"
74
+ rescue
75
+ EventBus.logger.debug "Connecting oops"
76
+ end
77
+ end
78
+
79
+ # Log connected events
80
+ def on_connected(parms)
81
+ begin
82
+ EventBus.logger.info "Connected: #{info(parms)}"
83
+ rescue
84
+ EventBus.logger.debug "Connected oops"
85
+ end
86
+ end
87
+
88
+ # Log connectfail events
89
+ def on_connectfail(parms)
90
+ begin
91
+ EventBus.logger.error "Connect Fail #{info(parms)}"
92
+ rescue
93
+ EventBus.logger.debug "Connect Fail oops"
94
+ end
95
+ =begin
96
+ # An example LoggerConnectionError raise
97
+ EventBus.logger.debug "Connect Fail, will raise"
98
+ raise Stomp::Error::LoggerConnectionError.new("quit from connect fail")
99
+ =end
100
+ end
101
+
102
+ # Log disconnect events
103
+ def on_disconnect(parms)
104
+ begin
105
+ EventBus.logger.info "Disconnected #{info(parms)}"
106
+ rescue
107
+ EventBus.logger.debug "Disconnected oops"
108
+ end
109
+ end
110
+
111
+ # Log miscellaneous errors
112
+ def on_miscerr(parms, errstr)
113
+ begin
114
+ EventBus.logger.unknown "Miscellaneous Error #{info(parms)}"
115
+ EventBus.logger.unknown "Miscellaneous Error String #{errstr}"
116
+ rescue
117
+ EventBus.logger.debug "Miscellaneous Error oops"
118
+ end
119
+ end
120
+
121
+ # Log Subscribe
122
+ def on_subscribe(parms, headers)
123
+ begin
124
+ EventBus.logger.info "Subscribe Parms #{info(parms)}"
125
+ EventBus.logger.info "Subscribe Headers #{headers}"
126
+ rescue
127
+ EventBus.logger.debug "Subscribe oops"
128
+ end
129
+ end
130
+
131
+ # Log UnSubscribe
132
+ def on_unsubscribe(parms, headers)
133
+ begin
134
+ EventBus.logger.info "UnSubscribe Parms #{info(parms)}"
135
+ EventBus.logger.info "UnSubscribe Headers #{headers}"
136
+ rescue
137
+ EventBus.logger.debug "UnSubscribe oops"
138
+ end
139
+ end
140
+
141
+ # Log Publish
142
+ def on_publish(parms, message, headers)
143
+ begin
144
+ EventBus.logger.info "Publish Parms #{info(parms)}"
145
+ EventBus.logger.info "Publish Message #{message}"
146
+ EventBus.logger.info "Publish Headers #{headers}"
147
+ rescue
148
+ EventBus.logger.debug "Publish oops"
149
+ end
150
+ end
151
+
152
+ # Log Receive
153
+ def on_receive(parms, result)
154
+ begin
155
+ EventBus.logger.info "Receive Parms #{info(parms)}"
156
+ EventBus.logger.info "Receive Result #{result}"
157
+ rescue
158
+ EventBus.logger.debug "Receive oops"
159
+ end
160
+ end
161
+
162
+ # Log Begin
163
+ def on_begin(parms, headers)
164
+ begin
165
+ EventBus.logger.info "Begin Parms #{info(parms)}"
166
+ EventBus.logger.info "Begin Result #{headers}"
167
+ rescue
168
+ EventBus.logger.debug "Begin oops"
169
+ end
170
+ end
171
+
172
+ # Log Ack
173
+ def on_ack(parms, headers)
174
+ begin
175
+ EventBus.logger.debug "Ack Parms #{info(parms)}"
176
+ EventBus.logger.debug "Ack Result #{headers}"
177
+ rescue
178
+ EventBus.logger.debug "Ack oops"
179
+ end
180
+ end
181
+
182
+ # Log NAck
183
+ def on_nack(parms, headers)
184
+ begin
185
+ EventBus.logger.debug "NAck Parms #{info(parms)}"
186
+ EventBus.logger.debug "NAck Result #{headers}"
187
+ rescue
188
+ EventBus.logger.debug "NAck oops"
189
+ end
190
+ end
191
+
192
+ # Log Commit
193
+ def on_commit(parms, headers)
194
+ begin
195
+ EventBus.logger.info "Commit Parms #{info(parms)}"
196
+ EventBus.logger.info "Commit Result #{headers}"
197
+ rescue
198
+ EventBus.logger.debug "Commit oops"
199
+ end
200
+ end
201
+
202
+ # Log Abort
203
+ def on_abort(parms, headers)
204
+ begin
205
+ EventBus.logger.info "Abort Parms #{info(parms)}"
206
+ EventBus.logger.info "Abort Result #{headers}"
207
+ rescue
208
+ EventBus.logger.debug "Abort oops"
209
+ end
210
+ end
211
+
212
+ # Stomp 1.1+ - heart beat read (receive) failed.
213
+ def on_hbread_fail(parms, ticker_data)
214
+ begin
215
+ EventBus.logger.warn "Hbreadf Parms #{info(parms)}"
216
+ EventBus.logger.warn "Hbreadf Result #{ticker_data.inspect}"
217
+ rescue
218
+ EventBus.logger.debug "Hbreadf oops"
219
+ end
220
+ end
221
+
222
+ # Stomp 1.1+ - heart beat send (transmit) failed.
223
+ def on_hbwrite_fail(parms, ticker_data)
224
+ begin
225
+ EventBus.logger.warn "Hbwritef Parms #{info(parms)}"
226
+ EventBus.logger.warn "Hbwritef Result #{ticker_data.inspect}"
227
+ rescue
228
+ EventBus.logger.debug "Hbwritef oops"
229
+ end
230
+ end
231
+
232
+ # Log SSL connection start.
233
+ def on_ssl_connecting(parms)
234
+ begin
235
+ EventBus.logger.info "SSL Connecting Parms #{info(parms)}"
236
+ rescue
237
+ EventBus.logger.debug "SSL Connecting oops"
238
+ end
239
+ end
240
+
241
+ # Log a successful SSL connect.
242
+ def on_ssl_connected(parms)
243
+ begin
244
+ EventBus.logger.info "SSL Connected Parms #{info(parms)}"
245
+ rescue
246
+ EventBus.logger.debug "SSL Connected oops"
247
+ end
248
+ end
249
+
250
+ # Log an unsuccessful SSL connect.
251
+ def on_ssl_connectfail(parms)
252
+ begin
253
+ EventBus.logger.error "SSL Connect Fail Parms #{info(parms)}"
254
+ EventBus.logger.error "SSL Connect Fail Exception #{parms[:ssl_exception]}, #{parms[:ssl_exception].message}"
255
+ rescue
256
+ EventBus.logger.debug "SSL Connect Fail oops"
257
+ end
258
+ =begin
259
+ # An example LoggerConnectionError raise
260
+ EventBus.logger.debug "SSL Connect Fail, will raise"
261
+ raise Stomp::Error::LoggerConnectionError.new("quit from SSL connect")
262
+ =end
263
+ end
264
+
265
+ # Log heart beat fires
266
+ def on_hbfire(parms, srind, curt)
267
+ begin
268
+ EventBus.logger.debug "HeartBeat Fire Parms #{info(parms)}"
269
+ EventBus.logger.debug "HeartBeat Fire Send/Receive #{srind}"
270
+ rescue
271
+ EventBus.logger.debug "HeartBeat Fire oops"
272
+ end
273
+ end
274
+
275
+ private
276
+
277
+ # Example information extract.
278
+ def info(parms)
279
+ #
280
+ # Available in the parms Hash:
281
+ # parms[:cur_host]
282
+ # parms[:cur_port]
283
+ # parms[:cur_login]
284
+ # parms[:cur_passcode]
285
+ # parms[:cur_ssl]
286
+ # parms[:cur_recondelay]
287
+ # parms[:cur_parseto]
288
+ # parms[:cur_conattempts]
289
+ # parms[:openstat]
290
+ #
291
+ # For the on_ssl_connectfail callback these are also available:
292
+ # parms[:ssl_exception]
293
+ #
294
+ "Host: #{parms[:cur_host]}, Port: #{parms[:cur_port]}, Login: #{parms[:cur_login]}, Passcode: #{parms[:cur_passcode]}," +
295
+ " ssl: #{parms[:cur_ssl]}, open: #{parms[:openstat]}"
296
+ end
297
+ end
298
+
299
+
300
+ # module ends
301
+ end
302
+ end
303
+ end
@@ -1,31 +1,73 @@
1
1
  # This module is primarily intended for use with ActiveMQ, though
2
2
  # it should work with any Stomp-speaking broker.
3
+ require 'eventbus/common_init'
4
+ require_relative 'stomp/slogger'
5
+ require 'socket'
3
6
  require 'stomp'
4
7
  module StompConnectionDriver
5
8
 
6
9
  @@StompConnector_Connection = nil
7
10
 
8
11
  def connection_driver_initialize
9
- puts "StompConnectionDriver is loaded!"
12
+
10
13
  end
11
14
 
12
15
  def get_connection
13
- if @@StompConnector_Connection.nil?
14
- opts = {
16
+
17
+ opts = {
18
+ :hosts => [
19
+ {
15
20
  :host => ENV["BROKER_HOST"] || "localhost",
16
- :port => ENV["BROKER_PORT"] || 61613,
17
- :user => ENV["BROKER_USER"],
18
- :pass => ENV["BROKER_PASS"],
19
- # :logging => opts.delete(:logging) || false,
20
- #:logfile => opts.delete(:logfile) || STDOUT
21
- }
22
-
23
- stomp_url = ENV['STOMP_URL'] ||
24
- "stomp://#{opts[:user]}:#{opts[:pass]}@#{opts[:host]}:#{opts[:port]}?initialReconnectDelay=5000&randomize=false&useExponentialBackOff=false"
25
- @@StompConnector_Connection = Stomp::Client.new(stomp_url)
26
- end
27
-
28
- return @@StompConnector_Connection
21
+ :port => ENV["BROKER_PORT"] || (ENV['EVENTBUS_STOMP_SSL'] == "false" ? 61613 : 61614),
22
+ :login => ENV["BROKER_USER"] || "eventbus",
23
+ :passcode => ENV["BROKER_PASS"] || "eventbus",
24
+ :ssl => ENV['EVENTBUS_STOMP_SSL'] == "false" ? false : true # True unless specified in ENV
25
+ }
26
+ ],
27
+ :reliable => ENV['EVENTBUS_STOMP_RELIABLE'] == "false" ? false : true, # True unless specified in ENV
28
+ :initial_reconnect_delay => 1,
29
+ :max_reconnect_delay => 10,
30
+ :use_exponential_back_off => true,
31
+ :back_off_multiplier => 2,
32
+ :closed_check => ENV['EVENTBUS_STOMP_CLOSED_CHECK'] == "false" ? false : true,
33
+ :hbser => true,
34
+ :max_hbread_fails => ENV['EVENTBUS_STOMP_MAX_HBREAD_FAILS'] || 5,
35
+ :max_hbrlck_fails => ENV['EVENTBUS_STOMP_MAX_HBREADLOCK_FAILS'] || 5,
36
+ :connect_timeout => 30,
37
+ :connect_headers => {
38
+ # Set up heartbeating to keep connection alive and notice right away when it isn't.
39
+ #
40
+ # Value is two integer millisecond interval values, comma-delimited
41
+ # <interval we can send>,<interval we want to receive from server>
42
+ # Heartbeating can be disabled entirely or from one end by using 0 for
43
+ # one or both of these values in the EVENTBUS_STOMP_HEARTBEAT_INTERVALS environment variable:
44
+ # 0,0 Disable all heartbeating
45
+ # 0,1000 Receive heartbeats from broker every 1000ms, but don't send them.
46
+ # 1000,0 Send heartbeats from client every 1000ms, but don't look for them from broker.
47
+ #
48
+ # This is turned on by default to keep the connection alive in some environments where they can be
49
+ # dropped silently. If the heartbeat fails, it will trigger the :reliable re-connect.
50
+ # Best to leave it on.
51
+ #
52
+ # For heartbeats to work properly, you must be using Stomp protocol version 1.2 or higher.
53
+ # Tested to work with Apache Apollo.
54
+ :host => Socket.gethostname,
55
+ :"accept-version" => ENV['EVENTBUS_STOMP_PROTOCOL_VERSION'] || "1.2",
56
+ :"heart-beat" => ENV['EVENTBUS_STOMP_HEARTBEAT_INTERVALS'] || '1000,1000',
57
+ },
58
+ :logger => ENV['EVENTBUS_STOMP_DETAILED_LOGGING'] == "true" ? EventBus::Connectors::Stomp::Slogger.new : nil,
59
+ }
60
+
61
+ # If we never opened one, or if it's closed and not reliable, then open a new connection.
62
+ if @@StompConnector_Connection.nil? || (@@StompConnector_Connection.closed? && ! @@StompConnector_Connction.reliable?)
63
+ EventBus.logger.info("Connecting to STOMP with options: #{opts.to_s}")
64
+ @@StompConnector_Connection = Stomp::Client.new(opts)
65
+ end
66
+
67
+ # I'm not sure whether we should sleep here if the connection is closed?() but is reliable?()
68
+ # Assuming that the connection will do the right thing and punting until I find out different.
69
+
70
+ return @@StompConnector_Connection
29
71
 
30
72
  end
31
73
 
@@ -48,7 +90,7 @@ module StompConnectionDriver
48
90
  # and *more useful* behavior.
49
91
  opts[:suppress_content_length] = true if opts[:suppress_content_length].nil?
50
92
 
51
- puts "Stomp sending message to: #{queue_name}"
93
+ EventBus.logger.info "Stomp sending message to: #{queue_name}"
52
94
 
53
95
  client = get_connection
54
96
  client.publish(queue_name, content, opts)
@@ -65,7 +107,6 @@ module StompConnectionDriver
65
107
  # processes and machines. Therefore, don't lock the queue exclusively (i.e. don't kill other clients!)
66
108
  # and only take blocks of one message rather than claiming large blocks. These assumptions should become
67
109
  # configurable at some point, but for now it's not really a concern.
68
- puts "Subscribing to #{queue_name}..."
69
110
 
70
111
  client.subscribe(queue_name, {"activemq.prefetchSize" => 1, "activemq.exclusive" => false}) do |msg|
71
112
  yield msg.body
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'yaml'
3
3
  require 'uuid'
4
+ require 'eventbus/common_init'
4
5
  require 'eventbus/queue'
5
6
 
6
7
  module EventBus
@@ -1,9 +1,14 @@
1
+ require 'eventbus/common_init'
2
+
1
3
  module EventBus
2
4
 
3
5
  class Queue
4
6
 
5
- def Queue.calc_name(base_name, application_id = "core", prod_level = ENV['PROD_LEVEL'], opts = {})
7
+ def Queue.calc_name(base_name, application_id, prod_level, opts = {})
6
8
 
9
+ application_id ||= EventBus.application_id
10
+ prod_level ||= EventBus.PROD_LEVEL
11
+
7
12
  global_queue = opts.delete(:global_queue) || false
8
13
  system_queue = opts.delete(:system_queue) || false
9
14
 
@@ -19,7 +24,6 @@ module EventBus
19
24
  queue_name = "#{application_id}.#{queue_name}" unless system_queue
20
25
  end
21
26
 
22
- puts "Calculated queue name: #{queue_name}"
23
27
  return queue_name
24
28
  end
25
29
 
@@ -1,13 +1,15 @@
1
1
  require 'logger'
2
+ require 'eventbus/common_init'
2
3
  require 'eventbus/queue'
4
+ require 'fileutils'
3
5
 
4
6
  module EventBus
7
+
5
8
  class Service
6
9
 
7
10
  attr_accessor :listen_queue
8
11
  attr_accessor :system_process
9
12
  attr_accessor :global_process
10
- attr_accessor :logger
11
13
 
12
14
  # Methods expected to be overridden in subclasses
13
15
  def handle_exception(message, exception)
@@ -21,10 +23,10 @@ class Service
21
23
  end
22
24
 
23
25
 
24
- def initialize(application_id = nil)
25
- @listen_queue = self.class.name
26
- @application_id = application_id || raise("No application ID specified!")
27
- @logger = Logger.new(STDOUT)
26
+ def initialize(application_id = EventBus.application_id)
27
+ @application_id = application_id
28
+
29
+ @listen_queue = self.class.name
28
30
  @system_process = false
29
31
  @global_process = false
30
32
 
@@ -51,7 +53,7 @@ class Service
51
53
  opts[:system_queue] = @system_process
52
54
  opts[:global_process] = @global_process
53
55
 
54
- queue_name = Queue.calc_name(listen_queue, @application_id, ENV['PROD_LEVEL'], opts)
56
+ queue_name = Queue.calc_name(listen_queue, @application_id, EventBus.PROD_LEVEL, opts)
55
57
 
56
58
  watch_queue(queue_name) do |message|
57
59
 
@@ -77,13 +79,23 @@ class Service
77
79
 
78
80
  end
79
81
 
82
+ def logger
83
+ EventBus.logger
84
+ end
85
+
86
+ def logger=(new_logger)
87
+ EventBus.logger = new_logger
88
+ end
89
+
80
90
  private
81
91
 
92
+
93
+
82
94
  def process_message_wrapper(message)
83
95
 
84
96
  begin
85
- puts "Beginning processing of message in new thread:"
86
- puts message
97
+ logger.info "Beginning processing of message in new thread:"
98
+ logger.info message
87
99
 
88
100
  process_message message
89
101
  rescue
@@ -93,11 +105,11 @@ class Service
93
105
  end
94
106
 
95
107
  def handle_exception_base(message, exception)
96
- puts "Caught exception. Exception Text: #{exception}"
97
- puts "Backtrace:"
98
- exception.backtrace.map { | frame | puts "- #{frame}"}
108
+ logger.error "Caught exception. Exception Text: #{exception}"
109
+ logger.error "Backtrace:"
110
+ exception.backtrace.map { | frame | logger.error "- #{frame}"}
99
111
 
100
- msg = EventBus::Message.new("CORE")
112
+ msg = EventBus::Message.new("EVENTBUS_CORE")
101
113
  msg.load(message)
102
114
  msg.set_error exception
103
115
 
@@ -106,8 +118,10 @@ class Service
106
118
  msg.send
107
119
  end
108
120
 
121
+ # This shouldn't be used deliberately when it can be helped (i.e. in EventBus code),
122
+ # but it re-directs puts in libs to logger.
109
123
  def puts(message)
110
- @logger.info message
124
+ logger.info message
111
125
  end
112
126
 
113
127
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventbus
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.24'
4
+ version: '0.26'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,8 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-03 00:00:00.000000000 Z
12
+ date: 2013-07-13 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bunny
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
14
  - !ruby/object:Gem::Dependency
31
15
  name: amqp
32
16
  requirement: !ruby/object:Gem::Requirement
@@ -81,12 +65,13 @@ executables: []
81
65
  extensions: []
82
66
  extra_rdoc_files: []
83
67
  files:
84
- - lib/eventbus/queue.rb
85
- - lib/eventbus/connectors/bunny.rb
86
- - lib/eventbus/connectors/stomp.rb
68
+ - lib/eventbus/service.rb
87
69
  - lib/eventbus/connectors/amqp.rb
70
+ - lib/eventbus/connectors/stomp.rb
71
+ - lib/eventbus/connectors/stomp/slogger.rb
72
+ - lib/eventbus/queue.rb
88
73
  - lib/eventbus/message.rb
89
- - lib/eventbus/service.rb
74
+ - lib/eventbus/common_init.rb
90
75
  homepage: http://spadea.net/?page_id=8
91
76
  licenses: []
92
77
  post_install_message:
@@ -110,5 +95,5 @@ rubyforge_project:
110
95
  rubygems_version: 1.8.23
111
96
  signing_key:
112
97
  specification_version: 3
113
- summary: Libraries for creating EventBus services
98
+ summary: Libraries for creating EventBus clients and services
114
99
  test_files: []
@@ -1,71 +0,0 @@
1
- # BunnyConnectionDriver is the original implementation of
2
- # the AMQP-based broker. I am trying to make this work with
3
- # straight Ruby AMQP driver, but this one is the default
4
- # until I get that working properly.
5
-
6
- module BunnyConnectionDriver
7
-
8
- @@BunnyConnector_Connection = nil
9
-
10
- def connection_driver_initialize
11
- puts "BunnyConnectionDriver is loaded!"
12
- end
13
-
14
- def get_connection
15
- if @@BunnyConnector_Connection.nil?
16
- new_opts = {
17
- :vhost => ENV["BROKER_VHOST"] || "eventbus",
18
- :host => ENV["BROKER_HOST"] || "localhost",
19
- :port => ENV["BROKER_PORT"] || 5672,
20
- :user => ENV["BROKER_USER"] || "eventbus",
21
- :pass => ENV["BROKER_PASS"] || "eventbus",
22
- # :logging => opts.delete(:logging) || false,
23
- #:logfile => opts.delete(:logfile) || STDOUT
24
- }
25
-
26
- @@BunnyConnector_Connection = Bunny.new(new_opts)
27
- @@BunnyConnector_Connection.start
28
- end
29
-
30
- return @@BunnyConnector_Connection
31
-
32
- end
33
-
34
- def send_raw(content, opts = {})
35
- queue_name = opts.delete(:queue_name)
36
- client = get_connection
37
-
38
- exchange = client.exchange('eventbus', :durable => true, :persistent => true, :immediate => false)
39
-
40
- puts "Declaring queue: #{queue_name}"
41
- q = client.queue(queue_name, :durable => true, :persistent => true, :immediate => false)
42
- q.bind('eventbus', :key => queue_name)
43
-
44
- puts "Publishing content to #{queue_name}: #{content}"
45
- exchange.publish(content, :key => queue_name)
46
- puts "Done!"
47
-
48
- end
49
-
50
- def watch_queue(listen_queue)
51
-
52
- b = get_connection
53
-
54
- @logger.info "Listening on #{listen_queue}"
55
-
56
- exchange = b.exchange('eventbus', :durable => true, :persistent => true, :immediate => false)
57
-
58
- q = b.queue(listen_queue, :durable => true, :persistent => true, :immediate => false)
59
- q.bind(exchange, :key => listen_queue)
60
-
61
- q.pop do |msg|
62
- if msg[:delivery_details].nil?
63
- # Gotta figure out why this is necessary. Blech.
64
- sleep 0.25
65
- else
66
- yield msg[:payload]
67
- end
68
- end
69
-
70
- end
71
- end