Module: Lapine::Consumer::Middleware
- Defined in:
- lib/lapine/consumer/middleware.rb,
lib/lapine/consumer/middleware/json_decoder.rb,
lib/lapine/consumer/middleware/error_handler.rb,
lib/lapine/consumer/middleware/message_ack_handler.rb
Overview
Consumer middleware can be registered as follows:
Lapine::Consumer::Middleware.add MyClass
Lapine::Consumer::Middleware.add MyClass, argument
Lapine::Consumer::Middleware.add_before MyClass, MyOtherClass, argument
Lapine::Consumer::Middleware.add_after MyClass, MyOtherClass, argument
Middleware should follow the pattern:
class MyMiddleware
attr_reader :app
def initialize(app, *arguments)
@app = app
end
def call(message)
app.call(message)
end
end
Defined Under Namespace
Classes: App, ErrorHandler, JsonDecoder, MessageAckHandler, Register, Registry
Constant Summary
collapse
- DEFAULT_MIDDLEWARE =
[
Register.new(MessageAckHandler),
Register.new(ErrorHandler),
Register.new(JsonDecoder)
].freeze
Class Method Summary
collapse
Class Method Details
.add(klass, *args) ⇒ Object
46
47
48
|
# File 'lib/lapine/consumer/middleware.rb', line 46
def add(klass, *args)
registry << [klass, args]
end
|
.add_after(after_klass, klass, *args) ⇒ Object
56
57
58
59
60
|
# File 'lib/lapine/consumer/middleware.rb', line 56
def add_after(after_klass, klass, *args)
idx = registry.index_of(after_klass)
raise MiddlewareNotFound.new("#{after_klass} not registered in Lapine middleware") unless idx
registry.insert(idx + 1, klass, args)
end
|
.add_before(before_klass, klass, *args) ⇒ Object
50
51
52
53
54
|
# File 'lib/lapine/consumer/middleware.rb', line 50
def add_before(before_klass, klass, *args)
idx = registry.index_of(before_klass)
raise MiddlewareNotFound.new("#{before_klass} not registered in Lapine middleware") unless idx
registry.insert(idx, klass, args)
end
|
.app ⇒ Object
74
75
76
77
78
|
# File 'lib/lapine/consumer/middleware.rb', line 74
def app
App.new.tap do |app|
app.chain = create_chain(app)
end
end
|
.create_chain(app) ⇒ Object
70
71
72
|
# File 'lib/lapine/consumer/middleware.rb', line 70
def create_chain(app)
registry.map { |r| r.create_new(app) }
end
|
.delete(klass) ⇒ Object
62
63
64
|
# File 'lib/lapine/consumer/middleware.rb', line 62
def delete(klass)
registry.delete(klass)
end
|