博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shuttle ESB(一)——入门实例
阅读量:6862 次
发布时间:2019-06-26

本文共 3644 字,大约阅读时间需要 12 分钟。

下载Shuttle ESB

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

    Shuttle-ESB源代码包列表
    公布页面

使用MSMQ高速入门

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

    安装MSMQ:

我们来创建一个很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须要知道消息往哪发。因为我们使用的是默认的消息路由的供应商,我们须要在应用程序配置文件里定义的路径。在项目配置中加入一条路径:

它的作用就是。告诉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();        }    }}

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

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

建立你的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
{ public void ProcessMessage(HandlerContext
context) { ColoredConsole.WriteLine(ConsoleColor.Blue, context.Message.BlueMessage); }public bool IsReusable { get { return true; } } }}

执行解决方式

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

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

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

实例下载

原文地址

转载地址:http://gpqyl.baihongyu.com/

你可能感兴趣的文章
OGG_GoldenGate数据迁移三进程Extract / Dump / Relicat(案例)
查看>>
OAF_文件系列11_实现OAF读写Excel包JXL和POI的区别(概念)
查看>>
未整理:MediaPlayer(1,2)
查看>>
c# 串口发送接收数据
查看>>
每周一荐:Objective-C的开源开发环境GNUstep
查看>>
10-C语言循环结构(一)
查看>>
python学习笔记--基础概要
查看>>
2018/11/28 scp eve-ng
查看>>
使用Django操作数据库入门
查看>>
ny106 背包问题
查看>>
nyoj228 士兵杀敌(5)插线问线
查看>>
ny712 探寻宝藏 ny61 传纸条(1)
查看>>
CSS后代选择器可能的错误认识
查看>>
Python垃圾回收机制
查看>>
Gson将参数放入实体类中进行包装之后再传递
查看>>
设置mysql5.7远程连接-----------https://blog.csdn.net/qiyueqinglian/article/details/52778230
查看>>
IOS7状态栏StatusBar官方标准适配方法
查看>>
嵌入式开发之项目---uboot 内存合集
查看>>
模式识别之ocr项目---(模板匹配&BP神经网络训练)
查看>>
python3 geohash 导入错误及解决
查看>>