代码拉取完成,页面将自动刷新
客户端核心代码,过滤器,服务发现,连接池,动态代理,aop实现,负载均衡等.
<groupId>dawdler</groupId>
<artifactId>dawdler-client</artifactId>
例:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<certificatePath>${CLASSPATH}key/dawdler.cer</certificatePath><!-- 身份验证 公钥路径 -->
<server-channel-group channel-group-id="user"
connection-num="2"
session-num="4" serializer="2"
user="jackson.song" password="srchen">
<!-- channel-group-id 标识id 一般用于@RemoteService(标识id),在服务器端是dawdler下deploys下部署的项目名称.
connection-num 连接数
session-num 会话数
serializer 序列化方式(1,jdk默认,2 kroy,支持扩展)
user 帐号
password 密码
-->
</server-channel-group>
</config>
client-conf.xml支持多环境配置 参考统一配置中心与多环境支持.
public static void main(String[] args) throws Exception {
Transaction tr = TransactionProvider.getTransaction("simple-service");//simple-servic为服务名
tr.setServiceName("com.anywide.dawdler.demo.service.HelloService");//接口全名
tr.setMethod("say");//方法名
tr.addString("jackson");//参数 String类型并传值 Transaction有一系列传参方法 具体查看Transaction
Object obj = tr.executeResult();//执行
System.out.println(obj);
ConnectionPool.shutdown();
}
@RemoteService("simple-service")
public interface HelloService {
public String say(String text);
public List<Message> responseList(Map<String, Object> data);
}
HelloService hs = ServiceFactory.getService(HelloService.class);
String response = hs.say("jackson");
实现DawdlerClientFilter接口,同时通过SPI方式扩展,支持@Order注解进行升序排序,具体可参考dawdler-circuit-breaker模块下的CircuitBreakerFilter.
目前提供随机负载与轮询负载.
继承AbstractLoadBalance抽象类,参考RoundRobinLoadBalance.构造方法中传入的name对应RemoteService注解中的loadBalance(默认为roundRobin).通过SPI方式配置LoadBalance文件中.
dawdler提供异步调用rpc的方式.
public static void main(String[] args) throws Exception {
Transaction tr = TransactionProvider.getTransaction("user");
tr.setServiceName("com.anywide.dawdler.demo.service.HelloService");//接口全名
tr.setMethod("say");//方法名
tr.addString("jackson");//参数 String类型并传值 Transaction有一系列传参方法 具体查看Transaction
tr.setAsync(true);//设置为异步执行
Object obj = tr.executeResult();//异步执行拿不到结果 返回的是null
obj = AsyncInvokeFutureHolder.getContext().getInvokeFuture().getResult();//获取异步执行结果
System.out.println(obj);
ConnectionPool.shutdown();
}
@RemoteService("simple-service")
public interface HelloService {
@RemoteServiceAssistant(async = true)//指定为异步
public String say(String text);
public List<Message> responseList(Map<String, Object> data);
}
HelloService hs = ServiceFactory.getService(HelloService.class);
hs.say("jackson");
InvokeFuture<String> future = AsyncInvokeFutureHolder.getContext().getInvokeFuture();
System.out.println(future.getResult());
ConnectionPool.shutdown();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。