/* * Copyright 2008-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.hasor.registry.server.pushing; import net.hasor.registry.RsfCenterEvent; /** * 注册中心下推送的事件类型,与枚举{@link RsfCenterEvent}为一对一映射关系。映射时增加了处理类。 * * @version : 2016年2月18日 * @author 赵永春(zyc@hasor.net) */ public enum RsfCenterEventEnum { /** * 追加或重新激活地址 * 说明:每当新的提供者上线时,都会通过该事件推送给消费者端。*/ AppendAddressEvent(RsfCenterEvent.RsfCenter_AppendAddressEvent, PushProcessor.class), /** * 使用新的地址本替换已有的地址本。 * 说明:废弃服务已有的地址本,使用全新的地址本加以替换。*/ RefreshAddressEvent(RsfCenterEvent.RsfCenter_RefreshAddressEvent, PushProcessor.class), /** * 推送无效的地址 * 说明:当有服务下线时,注册中心会通过该事件将无效的地址推送给消费者。*/ RemoveAddressEvent(RsfCenterEvent.RsfCenter_RemoveAddressEvent, PushProcessor.class), // /** * 推送服务级路由规则 * 说明:推送服务的路由规则给RSF客户端,该路由策略只会影响到特定的服务。*/ UpdateServiceRouteEvent(RsfCenterEvent.RsfCenter_UpdateServiceRouteEvent, PushProcessor.class), /** * 推送方法级路由规则。方法级路由是指:服务的路由策略可以为不同的方法做特殊配置 * 说明:推送服务的路由规则给RSF客户端,该路由策略只会影响到特定的服务。*/ UpdateMethodRouteEvent(RsfCenterEvent.RsfCenter_UpdateMethodRouteEvent, PushProcessor.class), /** * 推送参数级路由规则。参数级路由是指:服务的路由策略可以细分到服务方法的参数上,例如根据userID散列不用的服务调用地址 * 说明:推送服务的路由规则给RSF客户端,该路由策略只会影响到特定的服务。*/ UpdateArgsRouteEvent(RsfCenterEvent.RsfCenter_UpdateArgsRouteEvent, PushProcessor.class), // /** * 推送流控流控规则,流控规则包含了:限流、选址、单元化 * 说明:推送服务的路由规则给RSF客户端,该路由策略只会影响到特定的服务。*/ UpdateFlowControlEvent(RsfCenterEvent.RsfCenter_UpdateFlowControlEvent, PushProcessor.class); // //--------------------------------------------------------------------------------------------- // // private String rsfCenterEvent; private Class<? extends PushProcessor> processorType; RsfCenterEventEnum(String rsfCenterEvent, Class<? extends PushProcessor> processorType) { this.rsfCenterEvent = rsfCenterEvent; this.processorType = processorType; } public Class<? extends PushProcessor> getProcessorType() { return processorType; } @Override public String toString() { return this.name(); } public String forCenterEvent() { return rsfCenterEvent; } }