NServiceBus 入门2
NServiceBus官方文档翻译(二)NServiceBus 入门
在这篇教程中我们将学习如何创建一个非常简单的由客户端向服务端发送消息的订单系统。该系统包括三个项目:Client、Server 和 Messages,我们将按照以下步骤来完成这个任务。
- 创建 Client 项目
- 创建 Messages 项目
- 创建 Server 项目
- 发送订单
- 运行解决方案
完整的解决方案代码可以在这里下载。
创建 Client 项目
让我们开始创建 Client 项目,它将负责发送订单请求到一个 NServiceBus 终结点(Endpoint)。
以管理员权限运行 Visual Studio,添加一个名叫“Ordering.Client”的类库项目,并且将解决方案命名为“Ordering”。
我们现在需要引用 NServiceBus 的程序集,最快的方式是使用 NuGet 包管理控制台。
打开 NuGet 包管理控制台:
输入以下命令:
1
|
PM> Install-Package NServiceBus.Host |
注:需要重新加载项目
包安装程序将引用 NServiceBus 程序集并在 Client 项目中创建几个模板文件。
例如,“EndpointConfig.cs” 被用来配置项目的终结点,并且自动应用了服务端配置。
为了将配置修改为客户端配置,我们需要打开“EndpointConfig.cs”文件并修改以下代码:
1
2
3
4
5
6
|
namespace Ordering.Client { public class EndpointConfig : IConfigureThisEndpoint, AsA_Server { } } |
修改后的代码如下:
1
2
3
4
5
6
|
namespace Ordering.Client { public class EndpointConfig : IConfigureThisEndpoint, AsA_Client { } } |
注:仅继承的基类由 AsA_Server 修改为 AsA_Client。
稍后我们将在 Client 项目中添加更多代码,现在让我们先把焦点放在如何处理订单请求上面。
创建 Messages 项目
首先添加一个名叫“Ordering.Messages”的类库项目。
该项目将包含消息定义,并且将由客户端和服务端共享,这样两边都将获得强类型的消息描述。
在该项目中安装“NServiceBusInterfaces”NuGet包,在包管理控制台,输入以下命令:
1
|
PM> Install-Package NServiceBus.Interfaces -ProjectName Ordering.Messages |
添加一个“PlaceOrder.cs”文件,在其中添加以下代码:
1
2
3
4
5
6
7
8
9
10
|
namespace Ordering.Messages { public class PlaceOrder : ICommand { public Guid Id { get ; set ; } public string Product { get ; set ; } } } |
创建 Server 项目
现在我们可以开始创建处理订单的服务端,首先添加一个名为“Ordering.Server”的类库项目。
为该项目安装“NServiceBusHost”NuGet包,在包管理控制台,输入以下命令:
1
|
PM> Install-Package NServiceBus.Host -ProjectName Ordering.Server |
注:需要重新加载项目
添加对 Messages 项目的引用,以便服务端解释消息内容。
添加一个“PlaceOrderHandler.cs”文件,向其中写入以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
namespace Ordering.Server { public class PlaceOrderHandler : IHandleMessages<PlaceOrder> { public IBus Bus { get ; set ; } public void Handle(PlaceOrder message) { Console.WriteLine( @"Order for Product:{0} placed with id: {1}" , message.Product, message.Id); } } } |
发送订单
我们差不多快做好了,现在唯一剩下的就是回到 Client 项目中,添加对 Messages 项目的引用,并添加一个“SendOrder.cs”文件,向其中写入以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
namespace Ordering.Client { public class SendOrder : IWantToRunWhenBusStartsAndStops { public IBus Bus { get ; set ; } public void Start() { Console.WriteLine( "Press 'Enter' to send a message.To exit, Ctrl + C" ); while (Console.ReadLine() != null ) { var id = Guid.NewGuid(); Bus.Send( "Ordering.Server" , new PlaceOrder() { Product = "New shoes" , Id = id}); Console.WriteLine( "==========================================================================" ); Console.WriteLine( "Send a new PlaceOrder message with id: {0}" , id.ToString( "N" )); } } public void Stop() { } } } |
注:以上代码基于 4.x 版本,若使用 3.x 版本需要使用 “IWantToRunAtStartup”接口。
运行解决方案
已经完成编码了,现在是时候运行解决方案了。
在解决方案中设置启动项目,将 Client 和 Server 项目设置为同时运行。
最后点击 F5 按钮运行解决方案,即可看到整个系统。
将会有两个控制台应用程序启动,在客户端控制台中按下回车,将在服务端窗口中看到“Order for Product: New shoes placed”。
恭喜 - 你刚完成了你的第一个 NServiceBus 程序。
简单吧。
如果你在控制台中看到警告,不用担心,这些警告只是 NServiceBus 告诉你它无法找到需要的队列,它将自动为你创建。
接下来学些什么
- NServiceBus 入门之容错处理
- NServiceBus 和 SOA 的架构原则
敬请期待。
NServiceBus 入门2的更多相关文章
- NServiceBus官方文档翻译(二)NServiceBus 入门
在这篇教程中我们将学习如何创建一个非常简单的由客户端向服务端发送消息的订单系统.该系统包括三个项目:Client.Server 和 Messages,我们将按照以下步骤来完成这个任务. 创建 Clie ...
- NServiceBus入门:多个endpoint(Introduction to NServiceBus: Multiple endpoints)
原文地址:https://docs.particular.net/tutorials/intro-to-nservicebus/3-multiple-endpoints/ 侵删. 目前为止,我们只是在 ...
- NServiceBus入门:发布事件(Introduction to NServiceBus: Publishing events)
原文地址:https://docs.particular.net/tutorials/intro-to-nservicebus/4-publishing-events/ 侵删. 这个教程到目前为止,我 ...
- NServiceBus入门:启程(Introduction to NServiceBus: Getting started)
原文地址:https://docs.particular.net/tutorials/intro-to-nservicebus/1-getting-started/ 侵删. 最好的学习NService ...
- NServiceBus入门:发送一个命令(Introduction to NServiceBus: Sending a command)
原文地址:https://docs.particular.net/tutorials/intro-to-nservicebus/2-sending-a-command/ 侵删. 能够发送和接收mess ...
- NServiceBus 入门到精通(一)
什么是NServiceBus?NServiceBus 是一个用于构建企业级 .NET系统的开源通讯框架.它在消息发布/订阅支持.工作流集成和高度可扩展性等方面表现优异,因此是很多分布式系统基础平台的理 ...
- SOA、ESB、NServiceBus、云计算 总结
SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统.与此同时,SOA 还实现了整合资源,资源复用. SO ...
- SOA、ESB、NServiceBus、云计算
SOA.ESB.NServiceBus.云计算 总结 SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统 ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
随机推荐
- Linux了解进程的地址空间
供Linux了解虚拟内存,非常好的引导了.原文链接:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26683523&i ...
- cocos2dx 解释二具体的启动过程:内存管理和回调
在上一篇的第二部分中.我们有一句代码待解释的: // Draw the Scene void CCDirector::drawScene(void) { -... //tick before ...
- LESS使用介绍
使用: 在客户端使用 引入你的 .less 样式文件的时候要设置 rel 属性值为 "stylesheet/less": <link rel="stylesheet ...
- ios swift学习日记1-Swift 初见
最近ios的swift语言似乎火了,我没有objectc基金会,但在此之前有cjava的基础的.从这几天開始学习ios的swift语言.后期以博客形式公布.这里提供一本翻译的英文版的swif书籍. 还 ...
- MVC基本概念和流程
MVC基本概念和流程 MVC的概念 Model(模型):包含数据和行为.不过现在一般都分离开来:Value Object(数据) 和 服务层(行为). View(视图):负责进行模型的展示,一般就是展 ...
- unity脚本运行顺序具体的解释
unity脚本自带函数执行顺序例如以下:将以下脚本挂在随意物体执行就可以得到 Awake ->OnEable-> Start ->-> FixedUpdate-> Upd ...
- 杭电1162Eddy's picture
Eddy's picture Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Tota ...
- 1.cocos2dx存储卡的游戏代码、而游戏移植到“华为荣耀”电话、问题的总结移植
1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2 ...
- hdu1286 寻找新朋友 (欧拉功能)
原标题:点击打开链接 关于欧拉函数的算法具体解说:点击打开链接 欧拉函数 1.欧拉函数是不全然积性函数. 2.欧拉函数p(x) = x * (p1 - 1) / p1 * (p2 - 1)/p2 * ...
- Windows系统下Redis的安装
Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Github.StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http://redis.io/. 最近 ...