# nhEsb **Repository Path**: mirrors/nhEsb ## Basic Information - **Project Name**: nhEsb - **Description**: nhEsb 为开源 ESB 项目,提供服务发布、查找和治理功能 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: https://www.oschina.net/p/nhesb - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 4 - **Created**: 2020-07-31 - **Last Updated**: 2025-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nhesb nhEsb 为开源 ESB 项目,提供服务发布、查找和治理功能。 为了避免ESB性能瓶颈,在设计理念上采用旁路的方式。 ESB服务提供页面可以注册服务地址、访问权限,提供接口查询服务地址信息,记录服务访问日志。 这样系统间交互调用实际链接虽然不通过ESB,但认可起到服务治理的效果。提供统一的调用框架供系统嵌入。 客户端和服务端输入参数统一使用NhCmdRequest 客户端和服务端输入参数统一使用NhCmdResult 客户端通过INhCmdService接口实现类调用远程服务 INhCmdService接口目前有cxf和akka两种实现类。 NhCmdResult execNhCmd(NhCmdRequest nhCmdRequest) INhCmdService接口实现类需要通过工厂类获取 NhEsbClientFactory或NhEsbAkkaClientFactory 服务端通过继承INhCmdHandler接口实现服务handler 且handler的命名需要符合规范 Ws+命令名称+CmdHandler handler类需要使用spring管理 bean的id需要符合规范 ws+命令名称+CmdHandler 客户端A调用远程B系统Test服务的例子(底层选择基于cxf) NhCmdRequest nhCmdRequest=new NhCmdRequest();//生成输入参数对象 nhCmdRequest.setCmdName("Test");//设置命令名称,在服务端会映射为名为wsTestCmdHandler的springBean对象 nhCmdRequest.setFromSysId("A");//设置客户端系统标识A nhCmdRequest.setToSysId("B");//设置服务端系统标识B INhCmdService cmdService=NhEsbClientFactory.getClient("B");//输入服务端系统标识B获取合适的INhCmdService NhCmdResult result=null; try { result = cmdService.execNhCmd(nhCmdRequest);//远程调用 } catch (Exception e) { e.printStackTrace(); } //打印返回的结果数据 retStr=String.format("status=%d,code=%s,data=%s", result.getResultStatus(),result.getResultCode(),result.getResultData()); cxf客户端配置 NhEsbClientFactory工厂中设置不同目标系统访问地址(目标系统标识由NhEsbAddress中的sysid确定) NhEsbClientFactory.getClient("B");通过工厂取INhCmdService时输入参数选择不同目标系统 cxf远程服务端配置 在远程服务端容器中需配置暴露cxf接口监听服务和cxf框架 NhCmdServiceImpl负责转发调用指定的WsxxxCmdHandler实现 管理端sql CREATE TABLE `nhesb_service_address` ( `uuid` varchar(50) default NULL, `sysid` varchar(50) default NULL, `ip` varchar(255) default NULL, `port` varchar(10) default NULL, `url` varchar(500) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;