akka 练手 原来第一次是原封不动的返回传出去的参数
今天,有介绍akka的文章,就下了个源码的demo练手!
在TimeServer 这个实例中主要就2个文件
server端
static void Main(string[] args)
{
using (var system = ActorSystem.Create("TimeServer"))
{
Console.Title = "Server";
var server = system.ActorOf<TimeServerActor>("time");
Console.ReadLine();
Console.WriteLine("Shutting down...");
Console.WriteLine("Terminated");
}
} public class TimeServerActor : TypedActor, IHandle<string>
{
private readonly ILoggingAdapter _log = Context.GetLogger(); public void Handle(string message)
{
if (message.ToLowerInvariant() == "gettime")
{
var time =DateTime.UtcNow.ToLongTimeString();
Sender.Tell(time, Self);
}
else
{ _log.Error("Invalid command: {0}", message);
var invalid = "Unrecognized command";
Sender.Tell(invalid, Self);
}
}
}
客户端
private static void Main(string[] args)
{
using (var system = ActorSystem.Create("TimeClient"))
{
var tmp = system.ActorSelection("akka.tcp://TimeServer@localhost:9391/user/time");
Console.Title = string.Format("TimeClient {0}", Process.GetCurrentProcess().Id);
var timeClient = system.ActorOf(Props.Create(() => new TimeClientActor(tmp)), "timeChecker"); var fiber = FiberFactory.CreateFiber(3); while (!Program.IsShutdown)
{
fiber.Add(() =>
{
Thread.Sleep(3);
timeClient.Tell(Time);
});
} Console.WriteLine("Connection closed.");
fiber.GracefulShutdown(TimeSpan.FromSeconds(1)); Console.ReadLine();
IsShutdown = true;
Console.WriteLine("Shutting down...");
Console.WriteLine("Terminated");
}
} public class CheckTime { }
public class CheckTime2 { } public static CheckTime Time = new CheckTime(); public static CheckTime2 Time2 = new CheckTime2();
public class TimeClientActor : TypedActor, IHandle<string>, IHandle<CheckTime>
{
private readonly ICanTell _timeServer; public TimeClientActor(ICanTell timeServer)
{
_timeServer = timeServer;
} public void Handle(string message)
{
Console.WriteLine(message); } public void Handle(CheckTime message)
{
_timeServer.Tell("gettime", Self);
}
}
测试的时候,一直不知道 客户端传入CheckTime 类型,服务器是如何处理的。
测试才知道,原来不论你第一次传的是什么类型数据,都会原封不动的返回给客户端。
例如 你第一次直接传入字符串 gettime ,服务器返回的是还是gettime ,而不是日期
akka 练手 原来第一次是原封不动的返回传出去的参数的更多相关文章
- 别再说找不到Python练手项目了,这80个拿去过冬
开头真的很重要!!!一个吻,一部小说,一篇文章......好的开头就像一个漂亮女孩的问候,问完了,你还期待着她接下来会对你说些什么甜蜜的话呢. 真可惜!我不是漂亮女孩,我的这个开头也不好.但开头不好, ...
- 10个Python基础练习项目,你可能不会想到练手教程还这么有趣
美国20世纪最重要的实用主义哲学家约翰·杜威提出一个学习方法,叫做:Learning By Doing,在实践中精进.胡适.陶行知.张伯苓.蒋梦麟等都曾是他的学生,杜威的哲学也影响了蔡元培.晏阳初等人 ...
- 10个有趣的Python教程,附视频讲解+练手项目。
从前的日色变得慢,车.马.邮件都慢 一生只够爱一门编程语言 从前的教程也好看,画面精美有样子 你看了,立马就懂了 Python最性感的地方,就在于它的趣味性和前沿性,学习Python,你总能像科技节的 ...
- 面向对象第一次练手-------ArrayList集合、类、对象、冒泡排序、类型转换
思维转不过弯儿来 怎么做都是错 哪怕差一个()就成功的事情,也是千差万别 忽然想到一句话:差一步就成功的距离 = 差几万米就成功的距离 部分的理解和都体现在代码和注释里 using S ...
- Python练手之爬虫
很久没更新博客了,最近自学Python,写个在百度上爬算法题题解的爬虫,第一次写爬虫..纯当练手 慢慢来.. #coding:utf-8 ''' Created on 2016年11月22日 @aut ...
- jQuery练手:仿新浪微博图片文字列表淡进淡出上下滚动效果
1.效果及功能说明 仿新浪微博图片文字列表上下淡进淡出间歇上下滚动 2.实现原理 首先要设定div内只能显示4个图片那么多出来的图片会自动隐藏然后在给图片添加一个动画的事件让他们可以滚动的播放出来上下 ...
- Python练手项目实例汇总(附源码下载)
今天给大家分享几个有趣的Python练手项目实例,希望对Python初学者有帮助哈~ 一.经典的俄罗斯方块 1. 绑定功能 1 # 绑定功能 2 class App(Frame): 3 def _ ...
- Python学习路径及练手项目合集
Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159
- Cocos2d-Lua (练手) 微信打飞机
学习下lua,目前入门级,使用版本为 v3.3 Final For Win,空闲时间不足,只能断断续续写点东西. 一.子弹效果 子弹只做了一种,扇形发射,可以增加扇形大小,子弹的 ...
随机推荐
- usbip install
# README for usbip-utils## Copyright (C) 2011 matt mooney <mfm@muteddisk.com># 2 ...
- 常用数据结构的功能及复杂度总结(OI)
不定长数组 维护一个序列 在末尾插入/删除均摊O(1) 任意位置插入O(n) 指定位置查询/修改O(1) 空间O(n) 链表 维护一个序列 定位到第i个位置O(n) 在任意位置(已定位到该位置)插入/ ...
- 使用libssh2连接到远程服务器
libssh2-1.7.0.tar.gz 示例代码:libssh2-1.7.0.tar.gz\libssh2-1.7.0\example 官网示例 https://www.libssh2.org/e ...
- SmallLocks
folly/SmallLocks.h This module is currently x64 only. This header defines two very small mutex types ...
- c#静态构造函数与构造函数
构造函数这个概念,在我们刚开始学习编程语言的时候,就被老师一遍一遍的教着.亲,现在你还记得静态构造函数的适用场景吗?如果没有,那么我们一起来复习一下吧. 静态构造函数是在构造函数方法前面添加了stat ...
- Running Bitvise SSH Client as a Windows Service
It is possible to run a Windows program as a system service. The advantage of services is that they ...
- Oracle Tip: Choosing an efficient design for Boolean column values
Takeaway: When designing a database table structure, it's important to choose an efficient strategy ...
- Html生成控件
HtmlHelper:获取或设置 System.Web.Mvc.HtmlHelper 对象,该对象用于呈现 HTML 元素. 以下是Html的写法与生成的结果的对比 @Html.Label(" ...
- Python运维开发基础08-文件基础
一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...
- Inclusion–exclusion principle(动态规划)
QUESTION: 把(2, 3, 5, 7)称为primes,能被primes整除的我们称之为Walprimes,比如 -21, -30, 0, 5, 14 是, 而-121, 1, 143 etc ...