下载Shuttle ESB

从GitHub项目公布页,下载最新的公布版本号。

Shuttle-ESB源代码包列表http://www.nuget.org/packages?q=shuttle-esb

    公布页面
https://github.com/Shuttle/shutle-esb/releases

使用MSMQ高速入门

由于Shuttle ESB须要队列来操作。所以我们使用微软的MSMQ来实现。在做实例前,必须先确保你电脑上安装了MSMQ。

安装MSMQ:http://msdn.microsoft.com/en-us/library/aa967729%28v=vs.110%29.aspx

我们来创建一个很easy的实例。

我们发送一个命令。到主机server,server接收并显示。

注意:确保全部项目(源码以及你所新建的项目)在同一版本号的Framework下(如都在FrameWork 4.0下),用以保证IHost类型的服务都可以正常执行。

VS解决方式

建立一个VS解决方式并创建一个新的空方案。

    首先点击创建新项目;

    在其它项目类型选择Visual Studio解决方式并单击“空白解决方式模板;

    给解决方式起名为:QuickStart.Shuttle。

点击OK完毕创建。

消息

由于我们的消息是共享的,所以创建一个单独的组件共享控制。

新建一个项目。命名为:QuickStart.Shuttle.Messages.

新建一个名为WriteBlueMessageCommand 的类,并编写例如以下代码:

namespace QuickStart.Shuttle.Messages
{
public class WriteBlueMessageCommand
{
public string BlueMessage { get; set; }
}
}

client

新建一个控制台应用程序。命名为:QuickStart.Shuttle.Client ,并加入引用:

    QuickStart.Shuttle.Messages(项目引用)

    Shuttle-esb-msmq(能够下载源码)

在控制台应用实现中加入例如以下代码:

using System;
using QuickStart.Shuttle.Messages;
using Shuttle.Core.Infrastructure;
using Shuttle.ESB.Core;
namespace QuickStart.Shuttle.Client
{
internal class Program
{
private static void Main(string[] args)
{
var bus = ServiceBus.Create().Start();
ColoredConsole.WriteLine(
ConsoleColor.DarkGray,
"(to exit press enter on an empty line):");
ColoredConsole.WriteLine(
ConsoleColor.DarkGray,
"Enter a message to write in blue on the server and press enter:");
Console.WriteLine();
var message = Console.ReadLine();
while (!string.IsNullOrEmpty(message))
{
bus.Send(new WriteBlueMessageCommand
{
BlueMessage = message
});
message = Console.ReadLine();
}
bus.Dispose();
}
}
}

Shuttle ESB须要知道消息往哪发。因为我们使用的是默认的消息路由的供应商,我们须要在应用程序配置文件里定义的路径。在项目配置中加入一条路径:

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="serviceBus" type="Shuttle.ESB.Core.ServiceBusSection, Shuttle.ESB.Core"/>
</configSections>
<serviceBus>
<messageRoutes>
<messageRoute uri="msmq://./quickstart_server_inbox_work">
<add specification="StartsWith" value="QuickStart"/>
</messageRoute>
</messageRoutes>
</serviceBus>
</configuration>

它的作用就是。告诉Shuttle ESB发送全部的消息。

起点是QuickStart,终点是 msmq://./quickstartserverinbox_work

服务端

新建一个项目QuickStart.Shuttle.Server ,并加入例如以下引用:

    QuickStart.Shuttle.Messages(项目引用)

    Shuttle-esb-msmq(源码文件)

新建一个类,名为ServiceBusHost,由于我们将使用通用的主机托管server。所以我们须要一个通用的主入口点。它通过实现IHost接口,去找到所需运行的类。所以我们的ServiceBusHost类须要实现IHost接口。

using System;
using Shuttle.Core.Host;
using Shuttle.ESB.Core;
namespace QuickStart.Shuttle.Server
{
public class ServiceBusHost : IHost, IDisposable
{
private static IServiceBus bus;
public void Start()
{
bus = ServiceBus.Create().Start();
}
public void Dispose()
{
bus.Dispose();
}
}
}

我们的服务总线实例,须要处理一个输入队列,我们在配置文件里进行配置:

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="serviceBus" type="Shuttle.ESB.Core.ServiceBusSection, Shuttle.ESB.Core"/>
</configSections>
<serviceBus>
<inbox
workQueueUri="msmq://./quickstart_server_inbox_work"
errorQueueUri="msmq://./quickstart_server_inbox_error"/>
</serviceBus>
</configuration>

为了终端可以高效的启动。我们须要进行一些配置。

建立你的server项目的本地引用的程序集复制。打开项目属性,然后点开 调试 选项卡,在启动类型中,选择 启动外部程序。

然后选择本项目的bin文件夹下的Shuttle.Core.Host.exe 作为启动项目(由于引用了,所以会出如今这里。似乎是废话~~)

对于Shuttle ESB的消息接受机制。我们要为每个消息类型创建一个处理程序(Handler)。我们来为WriteBlueMessageCommand 消息创建一个Handler。新建一个名为WriteBlueMessageHandler 的类。并继承IMessageHandler 接口。

using System;
using QuickStart.Shuttle.Messages;
using Shuttle.Core.Infrastructure;
using Shuttle.ESB.Core;
namespace QuickStart.Shuttle.Server
{
public class WriteBlueMessageHandler : IMessageHandler<WriteBlueMessageCommand>
{
public void ProcessMessage(HandlerContext<WriteBlueMessageCommand> context)
{
ColoredConsole.WriteLine(ConsoleColor.Blue, context.Message.BlueMessage);
}
public bool IsReusable
{
get { return true; }
}
}
}

执行解决方式

为了可以正常执行解决方式,须要做例如以下配置:右击解决方式。选择启动项目选项卡。然后选择多启动项目之后。选择Client和Server。

然后。你就能够执行并測试了。

你已经创建了一个基于ESB的一个很easy的实例。可是这个样例是比較简陋的。从这里你能够了解样品并与社区參与扩大你的范围。

实例下载http://download.csdn.net/detail/liu765023051/7754559

原文地址http://shuttle.github.io/shuttle-esb/getting-started/index.html

Shuttle ESB(一)——入门实例的更多相关文章

  1. Shuttle ESB(四)——公布订阅模式实例介绍(1)

    前面,我已经集中用了三篇文章来讲Shuttle ESB的入门实例与宏观概念. Shuttle ESB一共同拥有两种发送消息的模式:请求/对应模式与Pub/Sub模式. 关于这两种模式的区分.请看以下文 ...

  2. Shuttle ESB(六)——在工程中的应用

    假设你可能浏览在前面几篇文章ESB介绍,我相信,在这篇文章中,你会发现很多共鸣. 虽然.市面上开源的ESB确实很之多.像Java中的Mule ESB.Jboss ESB:.Net中的NServiceB ...

  3. Shuttle ESB(四)——宣布订阅模式实例介绍(1)

    前,我的重点是关注的三篇文章Shuttle ESB入境和宏观的概念范例. Shuttle ESB模式:请求/对应模式与Pub/Sub模式. 关于这两种模式的区分,请看以下文章的介绍:Shuttle E ...

  4. Shuttle ESB

    Shuttle ESB(六)——在项目中的应用 如果说你认真看了前面几篇关于ESB的介绍,我相信,在这一篇文章中,你将会找到很多共鸣. 尽管,市面上开源的ESB确实非常之多,像Java中的Mule E ...

  5. Shuttle ESB实现消息推送

    ESB全称Enterprise Service Bus,即企业服务总线.它是传统中间件技术与XML.Web服务等技术结合的产物. ESB的出现改变了传统的软件架构,能够提供比传统中间件产品更为便宜的解 ...

  6. Shuttle ESB(三)——架构模型介绍(2)

    上一篇文章中,介绍了Shuttle ESB架构模型中的三个重要部分. 今天,我们继续介绍剩余的三个内容:模式和消息路由. 四.模式 Request/Response(请求/响应模式) 对基于Reque ...

  7. React 入门实例教程(转载)

    本人转载自: React 入门实例教程

  8. struts入门实例

    入门实例 1  .下载struts-2.3.16.3-all  .不摆了.看哈就会下载了. 2  . 解压  后 找到 apps 文件夹. 3.    打开后将 struts2-blank.war   ...

  9. Vue.js2.0从入门到放弃---入门实例

    最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中,在网上也搜了很多教程,按着教程来做,也总会出现这样那样的问题(坑啊,由于网上那些教程都是Vue.js 1.x版本的,现在用 ...

随机推荐

  1. C# orderby子句

    注意:对联接运算的结果进行排序. 请注意,排序在联接之后执行. 虽然可以在联接之前将 orderby 子句用于一个或多个源序列,不过通常不建议这样做. 某些 LINQ 提供程序可能不会在联接之后保留该 ...

  2. H5缓存

    h5 namifest(已经被废弃):http://www.tuicool.com/articles/VvABB3Y service worker缓存:https://developer.mozill ...

  3. 全局作用域 eval

    eval是在caller的作用域里运行传给它的代码: var x = 'outer';   (function() {     var x = 'inner';     eval('x'); // & ...

  4. JavaScript系列----数据类型以及传值和传引用

    1.简单数据类型 在JavaScript中简单数据类型分为5种.分别为 Undefined, Null,Boolean,Number,String. Undefined类型Undefined类型只有一 ...

  5. 微信支付——openid获取不到

    1.写微信支付遇到状况,通过wx.login获取code,然后向微信服务器获取openid,获取失败:{"errcode":40029,"errmsg":&qu ...

  6. OGEngine_2.x中BitmapFont加载后黑屏问题的解决办法

    在我使用OGEngine_2.x进行消灭圈圈(星星)游戏的实践的时候,使用BitmapFont对自定义字体进行调用. 原文字体教程如下:http://blog.csdn.net/OrangeGame/ ...

  7. C#里调用 MysqlDB

    最近在做项目,发现在使用Mysql提供给C#操作的类不是和好用,就想办法写了一个操作方便的Mysql数据层类. 比如以前在执 行一个查询 代码                              ...

  8. Git提交到github上

    1.本地创建一个目录redis [guosong@etch171 mars171 redis]# pwd /data1/guosong/code/redis [guosong@etch171 mars ...

  9. 手 Q 人脸识别动画实现详解

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 前言 开门见山,先来看下效果吧. 看到这么酷炫的效果图,不得不赞叹一下我们的设计师.然而,站在程序员的角度上看,除了酷炫之外更多的是复杂.但是 ...

  10. _2Python_注释命名等基本操作

    注释:注解,解释 主要用于在代码中给代码标识出相关的文字提示(提高代码的可读性)或调试程序,方便别人阅读和自己日后修改. Python中注释分为两类.单行注释:单行注释以#号开头,在一行内,#号后面的 ...