今天,有介绍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 练手 原来第一次是原封不动的返回传出去的参数的更多相关文章

  1. 别再说找不到Python练手项目了,这80个拿去过冬

    开头真的很重要!!!一个吻,一部小说,一篇文章......好的开头就像一个漂亮女孩的问候,问完了,你还期待着她接下来会对你说些什么甜蜜的话呢. 真可惜!我不是漂亮女孩,我的这个开头也不好.但开头不好, ...

  2. 10个Python基础练习项目,你可能不会想到练手教程还这么有趣

    美国20世纪最重要的实用主义哲学家约翰·杜威提出一个学习方法,叫做:Learning By Doing,在实践中精进.胡适.陶行知.张伯苓.蒋梦麟等都曾是他的学生,杜威的哲学也影响了蔡元培.晏阳初等人 ...

  3. 10个有趣的Python教程,附视频讲解+练手项目。

    从前的日色变得慢,车.马.邮件都慢 一生只够爱一门编程语言 从前的教程也好看,画面精美有样子 你看了,立马就懂了 Python最性感的地方,就在于它的趣味性和前沿性,学习Python,你总能像科技节的 ...

  4. 面向对象第一次练手-------ArrayList集合、类、对象、冒泡排序、类型转换

    思维转不过弯儿来  怎么做都是错      哪怕差一个()就成功的事情,也是千差万别 忽然想到一句话:差一步就成功的距离  =  差几万米就成功的距离 部分的理解和都体现在代码和注释里 using S ...

  5. Python练手之爬虫

    很久没更新博客了,最近自学Python,写个在百度上爬算法题题解的爬虫,第一次写爬虫..纯当练手 慢慢来.. #coding:utf-8 ''' Created on 2016年11月22日 @aut ...

  6. jQuery练手:仿新浪微博图片文字列表淡进淡出上下滚动效果

    1.效果及功能说明 仿新浪微博图片文字列表上下淡进淡出间歇上下滚动 2.实现原理 首先要设定div内只能显示4个图片那么多出来的图片会自动隐藏然后在给图片添加一个动画的事件让他们可以滚动的播放出来上下 ...

  7. Python练手项目实例汇总(附源码下载)

    今天给大家分享几个有趣的Python练手项目实例,希望对Python初学者有帮助哈~ 一.经典的俄罗斯方块   1. 绑定功能 1 # 绑定功能 2 class App(Frame): 3 def _ ...

  8. Python学习路径及练手项目合集

    Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159

  9. Cocos2d-Lua (练手) 微信打飞机

    学习下lua,目前入门级,使用版本为 v3.3 Final For Win,空闲时间不足,只能断断续续写点东西.   一.子弹效果          子弹只做了一种,扇形发射,可以增加扇形大小,子弹的 ...

随机推荐

  1. mysql-9索引

    mysql索引的建立对于mysql的高效运行是很重要的,索引可以大大提高mysql的检索速度. 索引分为单列索引和组合索引. 单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索 ...

  2. C#如何优雅的结束一个线程

    大家都知道在C#里面,我们可以使用 Thread.Start方法来启动一个线程,当我们想停止执行的线程时可以使用Thread.Abort方法来强制停止正在执行的线程,但是请注意,你确定调用了Threa ...

  3. oracle sqlplus conn 远程连接

  4. OpenMP n 体问题

    ▶ <并行程序设计导论>第六章中讨论了 n 体问题,分别使用了 MPI,Pthreads,OpenMP 来进行实现,这里是 OpenMP 的代码,分为基本算法和简化算法(引力计算量为基本算 ...

  5. windows下使用nginx配置tomcat集群

    转自:https://blog.csdn.net/csdn15698845876/article/details/80658599

  6. C#预编译的问题

    C#预编译宏并不像C++那样编译之后就不存在了.在UNITY的C#脚本中 #if UNITY_ANDROID && !UNITY_EDITOR AndroidJavaClass jc ...

  7. Apache Shiro学习-2-Apache Shiro Web Support

     Apache Shiro Web Support  1. 配置 将 Shiro 整合到 Web 应用中的最简单方式是在 web.xml 的 Servlet ContextListener 和 Fil ...

  8. springboot 中 集成druid ,redis

    1,导入druid jar包 <!--引入drud--> <dependency> <groupId>com.alibaba</groupId> < ...

  9. Oracle的服务端_默认_启动的服务

  10. for 续10

    ---------siwuxie095                   for 帮助信息:                                                     ...