Sha256: bde868580d05e4f4abe73ae22a212b4bfae67f426cb1f5163319fb31443f8d97
Contents?: true
Size: 1.96 KB
Versions: 6
Compression:
Stored size: 1.96 KB
Contents
module GameMachine class MessageQueue < Actor::Base def preStart if getContext.system.name == 'cluster' @mediator = JavaLib::DistributedPubSubExtension.get(get_context.system).mediator end end def on_receive(message) unless @mediator GameMachine.logger.info "Cluster mediator not found, message queue disabled!" unhandled(message) return end if message.is_a?(MessageLib::Publish) publish(message) elsif message.is_a?(MessageLib::Subscribe) subscribe(message) elsif message.is_a?(MessageLib::Unsubscribe) unsubscribe(message) elsif message.is_a?(JavaLib::DistributedPubSubMediator::SubscribeAck) GameMachine.logger.debug "Subscribed" else unhandled(message) end end private def subscribe(message) if message.topic sub = Java::akka::contrib::pattern::DistributedPubSubMediator::Subscribe.new(message.topic, get_sender) else sub = Java::akka::contrib::pattern::DistributedPubSubMediator::Put.new(get_sender) end @mediator.tell(sub, get_sender) end def unsubscribe(message) sub = Java::akka::contrib::pattern::DistributedPubSubMediator::Unsubscribe.new(message.topic, get_sender) @mediator.tell(sub, get_sender) end def publish(publish) if publish.message.has_chat_message publish_message = publish.message #publish.message.chat_message.message else publish_message = publish.message end if publish.topic message = Java::akka::contrib::pattern::DistributedPubSubMediator::Publish.new(publish.topic, publish_message) elsif publish.path message = Java::akka::contrib::pattern::DistributedPubSubMediator::SendToAll.new(publish.path, publish_message,true) else GameMachine.logger.error("Publish missing topic or path") return end @mediator.tell(message, get_sender) end end end
Version data entries
6 entries across 6 versions & 1 rubygems