Class: BasicJRPC::Server
- Inherits:
-
Object
- Object
- BasicJRPC::Server
- Defined in:
- lib/basicjrpc/server.rb
Instance Method Summary collapse
-
#initialize(queue, injected_class, host = "redis") ⇒ Server
constructor
A new instance of Server.
- #listen ⇒ Object
- #terminate ⇒ Object
Constructor Details
#initialize(queue, injected_class, host = "redis") ⇒ Server
Returns a new instance of Server.
4 5 6 7 8 9 |
# File 'lib/basicjrpc/server.rb', line 4 def initialize queue, injected_class, host="redis" @injected_class = injected_class @queue = queue #@nsq_consumer = Nsq::Consumer.new(nsqlookupd: 'dockerlb:4161', topic: @queue, channel: 'server') @host = host end |
Instance Method Details
#listen ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/basicjrpc/server.rb', line 11 def listen puts "Listening..." @redis = Redis.new(host: @host) while true begin redis_response = @redis.brpop(@queue) rescue @redis = Redis.new(host: @host) puts "REDIS FAILED! RETRYING" retry end next if redis_response.nil? = redis_response[1] payload = Oj.load(, :symbol_keys => true) response = @injected_class.send(payload.method_name, *payload.method_arguments) @redis.rpush(payload., Oj.dump(response)) end rescue Exception => e raise e end |
#terminate ⇒ Object
36 37 38 |
# File 'lib/basicjrpc/server.rb', line 36 def terminate #@nsq_consumer.terminate end |