lib/phobos/actions/process_message.rb in phobos-1.9.0.pre.beta1 vs lib/phobos/actions/process_message.rb in phobos-1.9.0.pre.beta2
- old
+ new
@@ -33,35 +33,52 @@
end
end
private
+ def preprocess(payload, handler)
+ if handler.respond_to?(:before_consume)
+ Phobos.deprecate('before_consume is deprecated and will be removed in 2.0. \
+ Use around_consume and yield payload and metadata objects.')
+ begin
+ handler.before_consume(payload, @metadata)
+ rescue ArgumentError
+ handler.before_consume(payload)
+ end
+ else
+ payload
+ end
+ end
+
+ def consume_block(payload, handler)
+ proc { |around_payload, around_metadata|
+ if around_payload
+ handler.consume(around_payload, around_metadata)
+ else
+ Phobos.deprecate('Calling around_consume without yielding payload and metadata \
+ is deprecated and will be removed in 2.0.')
+ handler.consume(payload, @metadata)
+ end
+ }
+ end
+
def process_message(payload)
instrument('listener.process_message', @metadata) do
handler = @listener.handler_class.new
- preprocessed_payload = before_consume(handler, payload)
- consume_block = proc { handler.consume(preprocessed_payload, @metadata) }
+ preprocessed_payload = preprocess(payload, handler)
+ block = consume_block(preprocessed_payload, handler)
if @listener.handler_class.respond_to?(:around_consume)
# around_consume class method implementation
Phobos.deprecate('around_consume has been moved to instance method, please update '\
'your consumer. This will not be backwards compatible in the future.')
- @listener.handler_class.around_consume(preprocessed_payload, @metadata, &consume_block)
+ @listener.handler_class.around_consume(preprocessed_payload, @metadata, &block)
else
# around_consume instance method implementation
- handler.around_consume(preprocessed_payload, @metadata, &consume_block)
+ handler.around_consume(preprocessed_payload, @metadata, &block)
end
end
- end
-
- def before_consume(handler, payload)
- handler.before_consume(payload, @metadata)
- rescue ArgumentError
- Phobos.deprecate('before_consume now expects metadata as second argument, please update '\
- 'your consumer. This will not be backwards compatible in the future.')
-
- handler.before_consume(payload)
end
end
end
end