Class: Harmony::Service::RpcService
- Inherits:
-
Object
- Object
- Harmony::Service::RpcService
- Includes:
- Sneakers::Worker
- Defined in:
- lib/harmony/service/rpc_service.rb
Instance Method Summary collapse
- #create_reply_to_connection ⇒ Object
- #create_reply_to_exchange ⇒ Object
- #reply_to_connection ⇒ Object
- #reply_to_exchange ⇒ Object
- #stop ⇒ Object
- #work_with_params(message, _delivery_info, metadata) ⇒ Object
Instance Method Details
#create_reply_to_connection ⇒ Object
44 45 46 47 48 49 |
# File 'lib/harmony/service/rpc_service.rb', line 44 def create_reply_to_connection opts = Sneakers::CONFIG conn = Bunny.new(opts[:amqp], vhost: opts[:vhost], heartbeat: opts[:heartbeat], logger: Sneakers.logger) conn.start conn end |
#create_reply_to_exchange ⇒ Object
55 56 57 58 |
# File 'lib/harmony/service/rpc_service.rb', line 55 def create_reply_to_exchange ch = reply_to_connection.create_channel ch.exchange(AMQ::Protocol::EMPTY_STRING, auto_delete: true) end |
#reply_to_connection ⇒ Object
40 41 42 |
# File 'lib/harmony/service/rpc_service.rb', line 40 def reply_to_connection @reply_to_connection ||= create_reply_to_connection end |
#reply_to_exchange ⇒ Object
51 52 53 |
# File 'lib/harmony/service/rpc_service.rb', line 51 def reply_to_exchange @reply_to_queue ||= create_reply_to_exchange end |
#stop ⇒ Object
34 35 36 37 38 |
# File 'lib/harmony/service/rpc_service.rb', line 34 def stop super # reply_to_exchange.close # not working reply_to_connection.close end |
#work_with_params(message, _delivery_info, metadata) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/harmony/service/rpc_service.rb', line 13 def work_with_params(, _delivery_info, ) logger.debug "Request: #{}" request = Oj.load() request_class = request.class response_classes = request_response_mapping[request_class] raise "Unacceptable request class: #{request_class}" if response_classes.nil? result = new_handler.work_with_request(request) raise "Unacceptable response class: #{result.class}" unless response_classes.include?(result.class) send_response(result, ) ack! rescue StandardError => error logger.error error. logger.error error.backtrace.join("\n") error_response = ErrorResponse.new message: error., exception: error send_response(error_response, ) reject! end |