Gossiper channel的运用

来源:互联网 发布:世界老龄化数据 编辑:程序博客网 时间:2024/06/06 01:52

节点间的通知

注册

 ch.ethz.systems.cloudy2.server.components.gossiper.cassandra.Gossiper.load()

{

...

   CloudyFactory.getMessaging().registerVerbHandler(GOSSIP_DIGEST_SYN_VERB, new GossipDigestSynVerbHandler());
  CloudyFactory.getMessaging().registerVerbHandler(GOSSIP_DIGEST_ACK_VERB, new GossipDigestAckVerbHandler());
  CloudyFactory.getMessaging().registerVerbHandler(GOSSIP_DIGEST_ACK2_VERB, new GossipDigestAck2VerbHandler());
....

}

调用

public static void receive(Message message)  {
  if (CloudyFactory.getTestingComponent().isSleeping())
   return;
     
        Runnable runnable = new MessageDeliveryTask(message);

        ExecutorService stage = StageManager.getStage(message.getStage());
        if (stage == null)
        {
            if (logger_.isDebugEnabled())
                logger_.debug("Running " + message.getStage() + " on default stage");
            messageDeserializerExecutor_.execute(runnable);
        }
        else
        {         
            stage.execute(runnable);
        }
    }

 

public class MessageDeliveryTask implements Runnable
{
    private Message message_;
    
    public MessageDeliveryTask(Message message)
    {
        message_ = message;   
    }
   
    public void run()
    {
        String verb = message_.getVerb();
        IVerbHandler verbHandler = MessagingService.getInstance().getVerbHandler(verb);
        if (verbHandler == null) {
         logger_.warn("Unknown verb " + verb + ". No processing occurs");
        } else {
         verbHandler.doVerb(message_); 
        }     
       // System.out.println("PUT 2"+Thread.currentThread().getName());
    }
}

 

applicationState

 

 

原创粉丝点击