文档章节

SmartRoute应用-helloWorld示例

泥水佬
 泥水佬
发布于 2015/08/24 12:09
字数 615
阅读 183
收藏 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

© 著作权归作者所有

共有 人打赏支持
泥水佬

泥水佬

粉丝 69
博文 83
码字总数 53391
作品 7
广州
架构师
私信 提问
消息智能路由组件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

没有更多内容

加载失败,请刷新页面

加载更多

CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
5
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
3
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
4
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部