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://[email protected]: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 ,而不是日期

时间: 2024-07-30 13:33:29

akka 练手 原来第一次是原封不动的返回传出去的参数的相关文章

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

思维转不过弯儿来  怎么做都是错      哪怕差一个()就成功的事情,也是千差万别 忽然想到一句话:差一步就成功的距离  =  差几万米就成功的距离 部分的理解和都体现在代码和注释里 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 面向对象初步练手 8 { 9 cl

Java制作最难练手速游戏,Faker都坚持不了一分钟

想练手速,来啊,互相伤害啊 Java制作最难练手速游戏,目测Faker也坚持不了一分钟 制作思路:只靠Java实现.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java. 字母模型应该是整个游戏的主角,因为整个游戏过程中都涉及到它的运动,比如坠落,消失,产生等,首先应该考虑字母随即出现的位置,在游戏中不断下落,计算下落的高

java 水题练手汇总

最近学java,会陆续找点水题练手. 题目链接 1 import java.util.*; 2 import java.awt.*; 3 import java.math.*; 4 5 public class Main { 6 7 public static void main(String args[]) { 8 Scanner cin=new Scanner(System.in); 9 int n, i; 10 int f[] = new int[35]; 11 f[0] = 0; 12

KMP算法的定义及KMP练手题 HDU 1711 Number Sequence (我的模板代码)

题意:就是要你来找出b数组在a数组中最先匹配的位置,如果没有则输出-1 思路:直接KMP算法(算法具体思想这位牛写的不错http://blog.csdn.net/v_july_v/article/details/7041827) AC代码: #include<cstdio> #include<cstring> #include<stdlib.h> #include<iostream> using namespace std; #define maxn 100

练手小游戏(代码篇之逻辑杂篇

其实呢,我这游戏就有一个简单的AI框架,其他的呢我就一起走了吧,写的还是挺乱的. 比较重要的就是玩家控制类PlayerController~~~ 这里其实我把几个模块都写在一起了,比如输入控制(InputController),动画控制(AnimatorController),还有角色控制 因为就是一个练手的,不用把各个平台的输入信息都整合了,所以InputController就不写了. 我感觉动画控制和角色控制的分界线很微妙,所以也就写一起了~ 走代码备注很全 //人物控制脚本 public

PYTHON POST练手

闲着无事跟着某同学在hackinglab.cn上做两道脚本题练手 就是模拟POST发包而已 4-大致上是每次访问index.php相对应一个验证码,只要不重新访问这个页面,用同一个验证码即可.于是代码模拟访问这个页面,获取cookie,再暴力密码post 11-思路相近,查看源码推测是post到vcode.php对应一个验证码,所以暴力之前post到这个php一次 PS:需要暴力两个电话号码 #!/bin/env python import urllib, urllib2, cookielib

练手题,没事就来AC吧 poj 4044 Score Sequence

此题为12年金华邀请赛A题 克隆了下比赛,A题最简单,也是最挑战人数据处理能力的一题,可惜自己数据处理能力太弱 久久不能写出代码---- 总结下就是题做少了,平时应多做题,少灌水,应放下看电影的时间,玩各种软件的时间 先做好一项再说才是正道,看到一句话说得好 "   人有两条路要走,一条是必须走的,一条是想走的,你必须把必须走的路走漂亮,才可以走想走的路..." 不扯了,贴代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Python之路【第二十四篇】:Python学习路径及练手项目合集

Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Python技术路径中包含入门知识.Python基础.Web框架.基础项目.网络编程.数据与计算.综合项目七个模块.路径中的教程将带你逐步深入,学会如何使用 Python 实现一个博客,桌面词典,微信机器人或网络安全软件等.完成本路径的基础及项目练习,将具备独立的Python开发能力. 完整的Python学

(练手备忘)汇编实现将输入的字符串中的空格去掉后反序输出

功能:任意输入一个字符串,去掉其中的空格后反序输出 注:使用 int 21h 里的 0AH 功能 输入一个字符串时,字符串的第一个字节存储的是字符串的最大长度,第二个字节存储的是实际读入字符的个数 编译器使用的是MASMPlus ;#Mode = DOS MAXLEN = 64 ;设置字符串的最大长度 SPACE = ' ' ;空格 datasg segment buffer db MAXLEN+1,0,MAXLEN+1 dup(0) ;字符串输入缓冲区 string db MAXLEN+3 d