进程拆分
通用插件定义
一个进程内部插件:
PrintPlugin:控制台打印+文件存储(不是每一个进程都需要)
ModelMgrPlugin:自定义属性可实现该功能
ServiceProxyPlugin:服务代理Plugin
ServicePlugin:被调用接口集合plugin:生产内部任务
TaskMgrPlugin:任务队列管理:任务缓存,任务消费,任务解析,任务执行
TaskCosumerPlugin:
-----自定义属性:业务配置属性化
加载多个配置文件
--Ice.Config=config.server,config.model
可以将业务自定义模型文件加入进来,通过属性获取配置文件的值
----外部接口调用
ServiceProxyPlugin
一个service暴露多个servant
解决问题:服务端多个接口放在一个实例 破坏了单一设计职责
一个接口类只干一种事儿
class Test001I : public Printer
class Test002I : public Logger
服务端:
auto servant = make_shared<PrinterI>();
adapter->add(servant, Ice::stringToIdentity("SimplePrinter"));
auto MyServant = make_shared<MyPrinterI>();
adapter->add(MyServant, Ice::stringToIdentity("SimplePrinterTest"));
客户端:
auto base = ich->stringToProxy("SimplePrinter:default -p 10000");
auto printer = Ice::checkedCast<PrinterPrx>(base);
if(!printer)
{
throw std::runtime_error("Invalid proxy");
}
printer->printString("Hello World!");
auto MyBase = ich->stringToProxy("SimplePrinterTest:default -p 10000");
auto printerT = Ice::checkedCast<PrinterPrx>(base);
----内部插件接口调用
X插件内部调用了本进程内部的HelloPlugin插件,调用了一个pluginTestApi方法。
auto helloPlugin = std::dynamic_pointer_cast<::HelloPluginI>(current.adapter->getCommunicator()->getPluginManager()->getPlugin(“HelloPlugin”));
helloPlugin->pluginTestApi();
zeroc所有属性查看
PropertyNames.cpp
属性介绍
https://docs.huihoo.com/ice/2.0.0/manual/index.html
----线程池配置
给客户端跨进程调用接口分配线程
Ice.ThreadPool.Client.Size=5
给服务端接口或者发送接口分配线程
Ice.ThreadPool.Server.Size=5
双向模式不管是接收还是发送都会分配线程