1.ActionModule概述

/*** Builds and binds the generic action map, all {@link TransportAction}s, and {@link ActionFilters}.*/

1.1 创建TransportAction

 static Map<String, ActionHandler<?, ?>> setupActions(List<ActionPlugin> actionPlugins) {// Subclass NamedRegistry for easy registrationclass ActionRegistry extends NamedRegistry<ActionHandler<?, ?>> {ActionRegistry() {super("action");}public void register(ActionHandler<?, ?> handler) {register(handler.getAction().name(), handler);}public <Request extends ActionRequest, Response extends ActionResponse> void register(Action<Response> action, Class<? extends TransportAction<Request, Response>> transportAction,Class<?>... supportTransportActions) {register(new ActionHandler<>(action, transportAction, supportTransportActions));}}ActionRegistry actions = new ActionRegistry();actions.register(MainAction.INSTANCE, TransportMainAction.class);actions.register(NodesInfoAction.INSTANCE, TransportNodesInfoAction.class);actions.register(RemoteInfoAction.INSTANCE, TransportRemoteInfoAction.class);actions.register(NodesStatsAction.INSTANCE, TransportNodesStatsAction.class);actions.register(NodesUsageAction.INSTANCE, TransportNodesUsageAction.class);actions.register(NodesHotThreadsAction.INSTANCE, TransportNodesHotThreadsAction.class);actions.register(ListTasksAction.INSTANCE, TransportListTasksAction.class);actions.register(GetTaskAction.INSTANCE, TransportGetTaskAction.class);actions.register(CancelTasksAction.INSTANCE, TransportCancelTasksAction.class);actions.register(ClusterAllocationExplainAction.INSTANCE, TransportClusterAllocationExplainAction.class);actions.register(ClusterStatsAction.INSTANCE, TransportClusterStatsAction.class);actions.register(ClusterStateAction.INSTANCE, TransportClusterStateAction.class);actions.register(ClusterHealthAction.INSTANCE, TransportClusterHealthAction.class);actions.register(ClusterUpdateSettingsAction.INSTANCE, TransportClusterUpdateSettingsAction.class);actions.register(ClusterRerouteAction.INSTANCE, TransportClusterRerouteAction.class);actions.register(ClusterSearchShardsAction.INSTANCE, TransportClusterSearchShardsAction.class);actions.register(PendingClusterTasksAction.INSTANCE, TransportPendingClusterTasksAction.class);actions.register(PutRepositoryAction.INSTANCE, TransportPutRepositoryAction.class);actions.register(GetRepositoriesAction.INSTANCE, TransportGetRepositoriesAction.class);actions.register(DeleteRepositoryAction.INSTANCE, TransportDeleteRepositoryAction.class);actions.register(VerifyRepositoryAction.INSTANCE, TransportVerifyRepositoryAction.class);actions.register(GetSnapshotsAction.INSTANCE, TransportGetSnapshotsAction.class);actions.register(DeleteSnapshotAction.INSTANCE, TransportDeleteSnapshotAction.class);actions.register(CreateSnapshotAction.INSTANCE, TransportCreateSnapshotAction.class);actions.register(RestoreSnapshotAction.INSTANCE, TransportRestoreSnapshotAction.class);actions.register(SnapshotsStatusAction.INSTANCE, TransportSnapshotsStatusAction.class);actions.register(IndicesStatsAction.INSTANCE, TransportIndicesStatsAction.class);actions.register(IndicesSegmentsAction.INSTANCE, TransportIndicesSegmentsAction.class);actions.register(IndicesShardStoresAction.INSTANCE, TransportIndicesShardStoresAction.class);actions.register(CreateIndexAction.INSTANCE, TransportCreateIndexAction.class);actions.register(ResizeAction.INSTANCE, TransportResizeAction.class);actions.register(RolloverAction.INSTANCE, TransportRolloverAction.class);actions.register(DeleteIndexAction.INSTANCE, TransportDeleteIndexAction.class);actions.register(GetIndexAction.INSTANCE, TransportGetIndexAction.class);actions.register(OpenIndexAction.INSTANCE, TransportOpenIndexAction.class);actions.register(CloseIndexAction.INSTANCE, TransportCloseIndexAction.class);actions.register(IndicesExistsAction.INSTANCE, TransportIndicesExistsAction.class);actions.register(TypesExistsAction.INSTANCE, TransportTypesExistsAction.class);actions.register(GetMappingsAction.INSTANCE, TransportGetMappingsAction.class);actions.register(GetFieldMappingsAction.INSTANCE, TransportGetFieldMappingsAction.class,TransportGetFieldMappingsIndexAction.class);actions.register(PutMappingAction.INSTANCE, TransportPutMappingAction.class);actions.register(IndicesAliasesAction.INSTANCE, TransportIndicesAliasesAction.class);actions.register(UpdateSettingsAction.INSTANCE, TransportUpdateSettingsAction.class);actions.register(AnalyzeAction.INSTANCE, TransportAnalyzeAction.class);actions.register(PutIndexTemplateAction.INSTANCE, TransportPutIndexTemplateAction.class);actions.register(GetIndexTemplatesAction.INSTANCE, TransportGetIndexTemplatesAction.class);actions.register(DeleteIndexTemplateAction.INSTANCE, TransportDeleteIndexTemplateAction.class);actions.register(ValidateQueryAction.INSTANCE, TransportValidateQueryAction.class);actions.register(RefreshAction.INSTANCE, TransportRefreshAction.class);actions.register(FlushAction.INSTANCE, TransportFlushAction.class);actions.register(SyncedFlushAction.INSTANCE, TransportSyncedFlushAction.class);actions.register(ForceMergeAction.INSTANCE, TransportForceMergeAction.class);actions.register(UpgradeAction.INSTANCE, TransportUpgradeAction.class);actions.register(UpgradeStatusAction.INSTANCE, TransportUpgradeStatusAction.class);actions.register(UpgradeSettingsAction.INSTANCE, TransportUpgradeSettingsAction.class);actions.register(ClearIndicesCacheAction.INSTANCE, TransportClearIndicesCacheAction.class);actions.register(GetAliasesAction.INSTANCE, TransportGetAliasesAction.class);actions.register(AliasesExistAction.INSTANCE, TransportAliasesExistAction.class);actions.register(GetSettingsAction.INSTANCE, TransportGetSettingsAction.class);actions.register(IndexAction.INSTANCE, TransportIndexAction.class);actions.register(GetAction.INSTANCE, TransportGetAction.class);actions.register(TermVectorsAction.INSTANCE, TransportTermVectorsAction.class);actions.register(MultiTermVectorsAction.INSTANCE, TransportMultiTermVectorsAction.class,TransportShardMultiTermsVectorAction.class);actions.register(DeleteAction.INSTANCE, TransportDeleteAction.class);actions.register(UpdateAction.INSTANCE, TransportUpdateAction.class);actions.register(MultiGetAction.INSTANCE, TransportMultiGetAction.class,TransportShardMultiGetAction.class);actions.register(BulkAction.INSTANCE, TransportBulkAction.class,TransportShardBulkAction.class);actions.register(SearchAction.INSTANCE, TransportSearchAction.class);actions.register(SearchScrollAction.INSTANCE, TransportSearchScrollAction.class);actions.register(MultiSearchAction.INSTANCE, TransportMultiSearchAction.class);actions.register(ExplainAction.INSTANCE, TransportExplainAction.class);actions.register(ClearScrollAction.INSTANCE, TransportClearScrollAction.class);actions.register(RecoveryAction.INSTANCE, TransportRecoveryAction.class);actions.register(NodesReloadSecureSettingsAction.INSTANCE, TransportNodesReloadSecureSettingsAction.class);//Indexed scriptsactions.register(PutStoredScriptAction.INSTANCE, TransportPutStoredScriptAction.class);actions.register(GetStoredScriptAction.INSTANCE, TransportGetStoredScriptAction.class);actions.register(DeleteStoredScriptAction.INSTANCE, TransportDeleteStoredScriptAction.class);actions.register(FieldCapabilitiesAction.INSTANCE, TransportFieldCapabilitiesAction.class,TransportFieldCapabilitiesIndexAction.class);actions.register(PutPipelineAction.INSTANCE, PutPipelineTransportAction.class);actions.register(GetPipelineAction.INSTANCE, GetPipelineTransportAction.class);actions.register(DeletePipelineAction.INSTANCE, DeletePipelineTransportAction.class);actions.register(SimulatePipelineAction.INSTANCE, SimulatePipelineTransportAction.class);actionPlugins.stream().flatMap(p -> p.getActions().stream()).forEach(actions::register);// Persistent tasks:actions.register(StartPersistentTaskAction.INSTANCE, StartPersistentTaskAction.TransportAction.class);actions.register(UpdatePersistentTaskStatusAction.INSTANCE, UpdatePersistentTaskStatusAction.TransportAction.class);actions.register(CompletionPersistentTaskAction.INSTANCE, CompletionPersistentTaskAction.TransportAction.class);actions.register(RemovePersistentTaskAction.INSTANCE, RemovePersistentTaskAction.TransportAction.class);return unmodifiableMap(actions.getRegistry());}

其类层次结构如下

1.2 创建ActionFilter

    private ActionFilters setupActionFilters(List<ActionPlugin> actionPlugins) {return new ActionFilters(Collections.unmodifiableSet(actionPlugins.stream().flatMap(p -> p.getActionFilters().stream()).collect(Collectors.toSet())));}

2.ActionModule使用

            ActionModule actionModule = new ActionModule(false, settings, clusterModule.getIndexNameExpressionResolver(),settingsModule.getIndexScopedSettings(), settingsModule.getClusterSettings(), settingsModule.getSettingsFilter(),threadPool, pluginsService.filterPlugins(ActionPlugin.class), client, circuitBreakerService, usageService);modules.add(actionModule);final RestController restController = actionModule.getRestController();
actionModule.initRestHandlers(() -> clusterService.state().nodes());

增加了rest服务的处理handler

public void initRestHandlers(Supplier<DiscoveryNodes> nodesInCluster) {List<AbstractCatAction> catActions = new ArrayList<>();Consumer<RestHandler> registerHandler = a -> {if (a instanceof AbstractCatAction) {catActions.add((AbstractCatAction) a);}};registerHandler.accept(new RestMainAction(settings, restController));registerHandler.accept(new RestNodesInfoAction(settings, restController, settingsFilter));registerHandler.accept(new RestRemoteClusterInfoAction(settings, restController));registerHandler.accept(new RestNodesStatsAction(settings, restController));registerHandler.accept(new RestNodesUsageAction(settings, restController));registerHandler.accept(new RestNodesHotThreadsAction(settings, restController));registerHandler.accept(new RestClusterAllocationExplainAction(settings, restController));registerHandler.accept(new RestClusterStatsAction(settings, restController));registerHandler.accept(new RestClusterStateAction(settings, restController, settingsFilter));registerHandler.accept(new RestClusterHealthAction(settings, restController));registerHandler.accept(new RestClusterUpdateSettingsAction(settings, restController));registerHandler.accept(new RestClusterGetSettingsAction(settings, restController, clusterSettings, settingsFilter));registerHandler.accept(new RestClusterRerouteAction(settings, restController, settingsFilter));registerHandler.accept(new RestClusterSearchShardsAction(settings, restController));registerHandler.accept(new RestPendingClusterTasksAction(settings, restController));registerHandler.accept(new RestPutRepositoryAction(settings, restController));registerHandler.accept(new RestGetRepositoriesAction(settings, restController, settingsFilter));registerHandler.accept(new RestDeleteRepositoryAction(settings, restController));registerHandler.accept(new RestVerifyRepositoryAction(settings, restController));registerHandler.accept(new RestGetSnapshotsAction(settings, restController));registerHandler.accept(new RestCreateSnapshotAction(settings, restController));registerHandler.accept(new RestRestoreSnapshotAction(settings, restController));registerHandler.accept(new RestDeleteSnapshotAction(settings, restController));registerHandler.accept(new RestSnapshotsStatusAction(settings, restController));registerHandler.accept(new RestGetIndicesAction(settings, restController));registerHandler.accept(new RestIndicesStatsAction(settings, restController));registerHandler.accept(new RestIndicesSegmentsAction(settings, restController));registerHandler.accept(new RestIndicesShardStoresAction(settings, restController));registerHandler.accept(new RestGetAliasesAction(settings, restController));registerHandler.accept(new RestIndexDeleteAliasesAction(settings, restController));registerHandler.accept(new RestIndexPutAliasAction(settings, restController));registerHandler.accept(new RestIndicesAliasesAction(settings, restController));registerHandler.accept(new RestCreateIndexAction(settings, restController));registerHandler.accept(new RestResizeHandler.RestShrinkIndexAction(settings, restController));registerHandler.accept(new RestResizeHandler.RestSplitIndexAction(settings, restController));registerHandler.accept(new RestRolloverIndexAction(settings, restController));registerHandler.accept(new RestDeleteIndexAction(settings, restController));registerHandler.accept(new RestCloseIndexAction(settings, restController));registerHandler.accept(new RestOpenIndexAction(settings, restController));registerHandler.accept(new RestUpdateSettingsAction(settings, restController));registerHandler.accept(new RestGetSettingsAction(settings, restController));registerHandler.accept(new RestAnalyzeAction(settings, restController));registerHandler.accept(new RestGetIndexTemplateAction(settings, restController));registerHandler.accept(new RestPutIndexTemplateAction(settings, restController));registerHandler.accept(new RestDeleteIndexTemplateAction(settings, restController));registerHandler.accept(new RestPutMappingAction(settings, restController));registerHandler.accept(new RestGetMappingAction(settings, restController));registerHandler.accept(new RestGetFieldMappingAction(settings, restController));registerHandler.accept(new RestRefreshAction(settings, restController));registerHandler.accept(new RestFlushAction(settings, restController));registerHandler.accept(new RestSyncedFlushAction(settings, restController));registerHandler.accept(new RestForceMergeAction(settings, restController));registerHandler.accept(new RestUpgradeAction(settings, restController));registerHandler.accept(new RestUpgradeStatusAction(settings, restController));registerHandler.accept(new RestClearIndicesCacheAction(settings, restController));registerHandler.accept(new RestIndexAction(settings, restController));registerHandler.accept(new RestGetAction(settings, restController));registerHandler.accept(new RestGetSourceAction(settings, restController));registerHandler.accept(new RestMultiGetAction(settings, restController));registerHandler.accept(new RestDeleteAction(settings, restController));registerHandler.accept(new org.elasticsearch.rest.action.document.RestCountAction(settings, restController));registerHandler.accept(new RestTermVectorsAction(settings, restController));registerHandler.accept(new RestMultiTermVectorsAction(settings, restController));registerHandler.accept(new RestBulkAction(settings, restController));registerHandler.accept(new RestUpdateAction(settings, restController));registerHandler.accept(new RestSearchAction(settings, restController));registerHandler.accept(new RestSearchScrollAction(settings, restController));registerHandler.accept(new RestClearScrollAction(settings, restController));registerHandler.accept(new RestMultiSearchAction(settings, restController));registerHandler.accept(new RestValidateQueryAction(settings, restController));registerHandler.accept(new RestExplainAction(settings, restController));registerHandler.accept(new RestRecoveryAction(settings, restController));registerHandler.accept(new RestReloadSecureSettingsAction(settings, restController));// Scripts APIregisterHandler.accept(new RestGetStoredScriptAction(settings, restController));registerHandler.accept(new RestPutStoredScriptAction(settings, restController));registerHandler.accept(new RestDeleteStoredScriptAction(settings, restController));registerHandler.accept(new RestFieldCapabilitiesAction(settings, restController));// Tasks APIregisterHandler.accept(new RestListTasksAction(settings, restController, nodesInCluster));registerHandler.accept(new RestGetTaskAction(settings, restController));registerHandler.accept(new RestCancelTasksAction(settings, restController, nodesInCluster));// Ingest APIregisterHandler.accept(new RestPutPipelineAction(settings, restController));registerHandler.accept(new RestGetPipelineAction(settings, restController));registerHandler.accept(new RestDeletePipelineAction(settings, restController));registerHandler.accept(new RestSimulatePipelineAction(settings, restController));// CAT APIregisterHandler.accept(new RestAllocationAction(settings, restController));registerHandler.accept(new RestShardsAction(settings, restController));registerHandler.accept(new RestMasterAction(settings, restController));registerHandler.accept(new RestNodesAction(settings, restController));registerHandler.accept(new RestTasksAction(settings, restController, nodesInCluster));registerHandler.accept(new RestIndicesAction(settings, restController, indexNameExpressionResolver));registerHandler.accept(new RestSegmentsAction(settings, restController));// Fully qualified to prevent interference with rest.action.count.RestCountActionregisterHandler.accept(new org.elasticsearch.rest.action.cat.RestCountAction(settings, restController));// Fully qualified to prevent interference with rest.action.indices.RestRecoveryActionregisterHandler.accept(new org.elasticsearch.rest.action.cat.RestRecoveryAction(settings, restController));registerHandler.accept(new RestHealthAction(settings, restController));registerHandler.accept(new org.elasticsearch.rest.action.cat.RestPendingClusterTasksAction(settings, restController));registerHandler.accept(new RestAliasAction(settings, restController));registerHandler.accept(new RestThreadPoolAction(settings, restController));registerHandler.accept(new RestPluginsAction(settings, restController));registerHandler.accept(new RestFielddataAction(settings, restController));registerHandler.accept(new RestNodeAttrsAction(settings, restController));registerHandler.accept(new RestRepositoriesAction(settings, restController));registerHandler.accept(new RestSnapshotAction(settings, restController));registerHandler.accept(new RestTemplatesAction(settings, restController));for (ActionPlugin plugin : actionPlugins) {for (RestHandler handler : plugin.getRestHandlers(settings, restController, clusterSettings, indexScopedSettings,settingsFilter, indexNameExpressionResolver, nodesInCluster)) {registerHandler.accept(handler);}}registerHandler.accept(new RestCatAction(settings, restController, catActions));}

类层次关系如下:

3.小结

actionModule定义了处理tcp和http服务的handler。

转载于:https://www.cnblogs.com/davidwang456/p/10143919.html

elasticSearch6源码分析(9)ActionModule相关推荐

  1. elasticSearch6源码分析(6)http和transport模块

    1.http模块概述 The http module allows to expose Elasticsearch APIs over HTTP.The http mechanism is compl ...

  2. elasticSearch6源码分析(2)模块化管理

    elasticsearch里面的组件基本都是用Guice的Injector进行注入与获取实例方式进行模块化管理. 在node的构造方法中 /*** Constructs a node** @param ...

  3. elasticSearch6源码分析(1)启动过程

    1.找到bin目录,下面有elasticSearch的sh文件,查看执行过程 exec \"$JAVA" \$ES_JAVA_OPTS \-Des.path.home=" ...

  4. elasticSearch6源码分析(12)DiscoveryModule

    1.DiscoveryModule概述 /*** A module for loading classes for node discovery.*/ 2.discovery The discover ...

  5. elasticSearch6源码分析(10)SettingsModule

    1.SettingsModule概述 /*** A module that binds the provided settings to the {@link Settings} interface. ...

  6. elasticSearch6源码分析(8)RepositoriesModule模块

    1.RepositoriesModule概述 Sets up classes for Snapshot/Restore 1.1 snapshot概述 A snapshot is a backup ta ...

  7. elasticSearch6源码分析(7)node

    1.node概述 Any time that you start an instance of Elasticsearch, you are starting a node. A collection ...

  8. elasticSearch6源码分析(5)gateway模块

    1.gateway概述 The local gateway module stores the cluster state and shard data across full cluster res ...

  9. elasticSearch6源码分析(4)indices模块

    1.indices概述 The indices module controls index-related settings that are globally managed for all ind ...

最新文章

  1. 如何让PhpStorm同时打开多个项目?(多项目并存的问题)
  2. SQL Server存储过程(转载)
  3. 云炬60s看世界20211122
  4. oracle 全表扫描 分区,oracle分区表全分区扫描问题
  5. Charles基本使用
  6. [SharePoint][SharePoint2013循序渐进]SPS2013简介
  7. 锐炬显卡可以linux吗,Intel Broadwell桌面CPU性能测试:Iris Pro 6200核显无敌了
  8. 【CodeForces - 485C】Bits (二进制相关,数学,贪心)
  9. python持久化数据_Python数据持久化-mysql篇
  10. (14)FPGA触发器与寄存器区别
  11. python整形浮点型_Python3基础 | 整型浮点型
  12. linux中id命令的功能,linux中的id命令
  13. 用CSS制作细线表格
  14. 上传文件的几种主要方法。
  15. window.print()手动设置纸张的宽高
  16. 当前时间戳(SimpleDateFormat)
  17. 屏幕适配和百分比布局
  18. arcgis server10.5将https改为http,6443改为6080默认端口
  19. ios,关于“按住说话”这个按钮的一个奇葩问题
  20. CUDA与OpenGL交互开发

热门文章

  1. 新闻与传播c刊_新闻传播类c刊有哪些
  2. postman请求soap 请求_postman中请求如何传递对象到spring controller?
  3. Android开发基本概念
  4. FFMpeg的基本介绍
  5. C++中的二阶构造模式
  6. tensorflow运行环境linux,在ubuntu或者min运行环境下安装gpu版本的tensorflow
  7. 钉钉扫码登录第三方_在钉钉发布公司重要文件,真的安全吗?
  8. 小学计算机管理员培训,中小学计算机管理员培训心得体会-20210401075623.docx-原创力文档...
  9. jet nano 车道识别
  10. jetson nano 安装 onnx