Class: NatsWork::CircuitBreakedConnection

Inherits:
Object
  • Object
show all
Defined in:
lib/natswork/circuit_breaker.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection, circuit_breaker_options = {}) ⇒ CircuitBreakedConnection

Returns a new instance of CircuitBreakedConnection.



159
160
161
162
# File 'lib/natswork/circuit_breaker.rb', line 159

def initialize(connection, circuit_breaker_options = {})
  @connection = connection
  @circuit_breaker = CircuitBreaker.new(circuit_breaker_options)
end

Instance Attribute Details

#circuit_breakerObject (readonly)

Returns the value of attribute circuit_breaker.



157
158
159
# File 'lib/natswork/circuit_breaker.rb', line 157

def circuit_breaker
  @circuit_breaker
end

#connectionObject (readonly)

Returns the value of attribute connection.



157
158
159
# File 'lib/natswork/circuit_breaker.rb', line 157

def connection
  @connection
end

Instance Method Details

#connectObject



164
165
166
# File 'lib/natswork/circuit_breaker.rb', line 164

def connect
  @circuit_breaker.call { @connection.connect }
end

#connected?Boolean

Returns:

  • (Boolean)


172
173
174
# File 'lib/natswork/circuit_breaker.rb', line 172

def connected?
  @connection.connected?
end

#disconnectObject



168
169
170
# File 'lib/natswork/circuit_breaker.rb', line 168

def disconnect
  @connection.disconnect
end

#healthy?Boolean

Returns:

  • (Boolean)


206
207
208
# File 'lib/natswork/circuit_breaker.rb', line 206

def healthy?
  @circuit_breaker.closed? && @connection.healthy?
end

#jetstreamObject



196
197
198
# File 'lib/natswork/circuit_breaker.rb', line 196

def jetstream
  @circuit_breaker.call { @connection.jetstream }
end

#on_disconnect(&block) ⇒ Object



221
222
223
# File 'lib/natswork/circuit_breaker.rb', line 221

def on_disconnect(&block)
  @connection.on_disconnect(&block)
end

#on_error(&block) ⇒ Object



225
226
227
# File 'lib/natswork/circuit_breaker.rb', line 225

def on_error(&block)
  @connection.on_error(&block)
end

#on_reconnect(&block) ⇒ Object

Delegate callback methods



217
218
219
# File 'lib/natswork/circuit_breaker.rb', line 217

def on_reconnect(&block)
  @connection.on_reconnect(&block)
end

#pingObject



210
211
212
213
214
# File 'lib/natswork/circuit_breaker.rb', line 210

def ping
  @circuit_breaker.call { @connection.ping }
rescue CircuitOpenError
  false
end

#publish(subject, payload) ⇒ Object



176
177
178
# File 'lib/natswork/circuit_breaker.rb', line 176

def publish(subject, payload)
  @circuit_breaker.call { @connection.publish(subject, payload) }
end

#request(subject, payload, opts = {}) ⇒ Object



184
185
186
# File 'lib/natswork/circuit_breaker.rb', line 184

def request(subject, payload, opts = {})
  @circuit_breaker.call { @connection.request(subject, payload, opts) }
end

#statsObject



200
201
202
203
204
# File 'lib/natswork/circuit_breaker.rb', line 200

def stats
  connection_stats = @connection.stats
  connection_stats[:circuit_breaker] = @circuit_breaker.stats
  connection_stats
end

#subscribe(subject, opts = {}, &block) ⇒ Object



180
181
182
# File 'lib/natswork/circuit_breaker.rb', line 180

def subscribe(subject, opts = {}, &block)
  @circuit_breaker.call { @connection.subscribe(subject, opts, &block) }
end

#unsubscribe(sid) ⇒ Object



188
189
190
# File 'lib/natswork/circuit_breaker.rb', line 188

def unsubscribe(sid)
  @circuit_breaker.call { @connection.unsubscribe(sid) }
end

#with_connection(&block) ⇒ Object



192
193
194
# File 'lib/natswork/circuit_breaker.rb', line 192

def with_connection(&block)
  @circuit_breaker.call { @connection.with_connection(&block) }
end