文档章节

SmartRoute应用-helloWorld示例

泥水佬
 泥水佬
发布于 2015/08/24 12:09
字数 615
阅读 176
收藏 1

        本章主要是通过helloWorld来介绍SmartRoute组件的使用,SmartRoute和一般的通讯组件使用方式用点差别,使用方式主要强调就用零配置和零安装即可用.在传统通讯应用中需要开启服务端然后由另一方连接然后进行消息交互;而在SmartRoute中则以消息订阅和投递进行消息交互,所以在使用SmartRoute的时候只需要关注两件事情:以那个资源ID进行消息订阅和需要向那个资源ID发送消息.

        接下来通过一个helloWorld的示例来详解SmartRoute的使用.

初始化组件

        既然组件强调的是零配置和零安装,组件初始化自然就是一件简单的事情.不过在使用组件前需要引用两个DLL:SmartRoute.DLL和Newtonsoft.Json.DLL.接下来需要做的就是一行代码的事情.

Route.AddLogHandler(new ConsoleLogHandler(LogType.DEBUG | LogType.ERROR | LogType.FATAL | LogType.INFO | LogType.NONE | LogType.WARN));
            Route.DefaultNode.Open();

        通过Route.DefaultNode.Open()打开默认节点

订阅消息

        组件提供SubscribeEvent对象来订阅消息

ken = new SubscribeEvent("ken");

        使用对象构建一个订阅的时候必须给一个唯一标识,确保在整个群集中是唯一的.如果同一ID在不同服务中订阅,那集群在投递的时候就会选择最后一次注册.

        注册后可以针对订阅对象制一系列的消息路由方法.

henry = new SubscribeEvent("henry");
            henry.RegisterProcess<Hello>((o, e) =>
            {
                Console.WriteLine(e.Message.GetBody<Hello>().Content);
                e.Result = e.Message.Reply(new Hello { Content = "I'm fine!" });
            });

        以上是henry订阅只要接收到的消息是Hello对象,则执行相应的方法.

投递消息

        订阅对象提供几种消息投递方式,分别是:投递后不需要获取返回结果,投递后结果异步方法调用和投递后获取返回结果.

Hello hello = new Hello { Content = "hello henry! how are you?" };
                IMessage message = ken.Get("henry", hello);
                if (message != null)
                    Console.WriteLine(message.GetBody<Hello>().Content);

        以上是向henry发送一个hello的消息.

示例Request完整代码

namespace SmartRoute.HelloRequest
{
    class Program
    {
        static SubscribeEvent ken;
        static void Main(string[] args)
        {
            Route.AddLogHandler(new ConsoleLogHandler(LogType.DEBUG |
                LogType.ERROR | LogType.FATAL | LogType.INFO |
                LogType.NONE | LogType.WARN));
            Route.DefaultNode.Open();
            ken = new SubscribeEvent("ken");
            while (true)
            {
                Hello hello = new Hello { Content = "hello henry! how are you?" };
                IMessage message = ken.Get("henry", hello);
                if (message != null)
                    Console.WriteLine(message.GetBody<Hello>().Content);
                System.Threading.Thread.Sleep(1000);
            }
        }
    }
}

示例Response完整代码

namespace SmartRoute.HelloResponse
{
    class Program
    {
        static SubscribeEvent henry;
        static void Main(string[] args)
        {
            Route.AddLogHandler(new ConsoleLogHandler(LogType.DEBUG | 
                LogType.ERROR | LogType.FATAL | LogType.INFO | 
                LogType.NONE | LogType.WARN));
            Route.DefaultNode.Open();
            henry = new SubscribeEvent("henry");
            henry.RegisterProcess<Hello>((o, e) =>
            {
                Console.WriteLine(e.Message.GetBody<Hello>().Content);
                e.Result = e.Message.Reply(new Hello { Content = "I'm fine!" });
            });
            System.Threading.Thread.Sleep(-1);
        }
    }
}


下载

Hello Demo

© 著作权归作者所有

共有 人打赏支持
泥水佬

泥水佬

粉丝 64
博文 74
码字总数 41338
作品 6
广州
架构师
消息智能路由组件SmartRoute

消息传递在软件开发过程中是一件很常见的事情,而在不同的场景所使用消息传递方式也有所不同,在对象之间制定相关接口方法和对象结构,对于进程之间可能使用内存共享或一些通讯产品,在不同服务器...

泥水佬
2015/08/17
0
1
smartroute集成聊天通讯集群

在制定一个规模比较多大的聊天应用时,往往需要制定部署多个应用服务,其一可以保障服务的可靠性,其二可以增加用户负载量.但制定这样一种应用体系是一件复杂的事情,毕竟同一群体的用户实际上会...

泥水佬
2015/08/26
0
0
SmartRoute零配置零安装实现分布式负载应用

随着应用规模的增长服务则需要扩展集群休部署,在集群化部署过程首先要考虑服务负载处理的问题,在实现应用场中有很多集群化的负载方式,如网络通讯层面的LVS,HTTP应用协议层面的nginx.然而这...

泥水佬
2016/01/14
174
0
基于 Dotnet Core 的服务通讯组件--SmartRoute

SmartRoute 是基于Dotnet Core设计的可运行在linux和windows下的服务通讯组件,其设计理念是去中心化和零配置即可实现服务通讯集群。SmartRoute是通过消息订阅的机制实现服务与服务之间的通讯...

泥水佬
2016/11/08
1K
2
.Net Core开源通讯组件 SmartRoute(服务即集群)

SmartRoute是基于Dotnet Core设计的可运行在linux和windows下的服务通讯组件,其设计理念是去中心化和零配置即可实现服务通讯集群。SmartRoute是通过消息订阅的机制实现服务与服务之间的通讯...

泥水佬
2016/11/08
99
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell-日志脚本小实验

1.查找日志2018-8-15,求得那一分钟访问量最大。 #/bin/bash#from cc#2018-8-15#2018-08-15.log 哪一分钟 访问量 最大for d in `ls /data/nginx/logs/`doif [ -a 2018-08-15...

chencheng-linux
昨天
0
0
Android中的设计模式之状态模式

参考 《设计模式:可复用面向对象软件的基础 》5.8 State 状态 对象行为型模式 《Android源码设计模式解析与实战》第7章 随遇而安--状态模式 意图 允许一个对象在其内部状态改变时改变它的行...

newtrek
昨天
0
0
xshell端 vim没有颜色

说明 使用xshell连接服务器的时候,使用vim打开文档没有颜色 解决方法: 1.在更目录home或者etc下找到vim的配置文件vimrc 2.vim打开它找个坑,添加下面这个东西 set t_Co=256 3.保存退出,就...

杉下
昨天
0
0
spring 资料

spring boot http://www.ityouknow.com/springboot/2016/01/06/spring-boot-quick-start.html

zaolonglei
昨天
2
0
TypeScript基础入门 - 函数 - 简介

转载 TypeScript基础入门 - 函数 - 简介 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.1.6 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接...

durban
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部