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

前面,我已经集中用了三篇文章来讲Shuttle ESB的入门实例与宏观概念。

Shuttle ESB一共同拥有两种发送消息的模式:请求/对应模式与Pub/Sub模式。

关于这两种模式的区分。请看以下文章的介绍:Shuttle ESB(三)——架构模型介绍(2)

在Shuttle ESB的第一篇文章中,关于入门实例的介绍,是基于Command命令的请求响应模式。这样的模式发送的消息比較简单。是同步的。

发送消息端与接收消息端的行为耦合性比較大。

请求发送后,其它进程都会处于等待状态。等待服务端返回响应信息后,client才会进行其它行为。

PS:Shuttle ESB的Command模式与Pub/Sub模式全然类似于Ejb中的P2P与Pub/Sub。

然而,Pub/Sub模式将消息的公布端与订阅端进行了充分的解耦。

Pub端发送消息后,不用等待消息的返回,它能够选择继续发送或者停止发送。

接收端假设想接收消息。仅仅需订阅该事件消息就可以。

我们在项目中真正使用Shuttle ESB的时候。大多数情况下,我们会使用Pub/Sub模式。以下。我们就对这样的模式进行解说。

注意:即便是基于命令的请求/对应模式,也可用公布订阅的方式实现。

眼下,Shuttle ESB仅仅支持三种队列:微软的消息队列MSMQ、SqlServer基于表的队列和Rabbit MSMQ。

Shuttle ESb的Pub/Sub模式,须要MSMQ和SqlServer基于表队列两种消息队列进行实现。

关于基于SqlServer表队列,我们大家可能会有疑义:使用SqlServer数据库,不就限定了Shuttle ESB的适用范围了吗?

大家不必有此操心。

Shuttle ESB核心组件是不基于不论什么第三方组件的。将来它肯定会支持MySql和Oracle或者别的数据库的。眼下仅仅是由于Eben没有使用过Oracle,对Oracle还不是非常熟悉。所以没有做基于Oracle的队列实现。当然他跟我提过多次。希望我为开源社区做点贡献。在GitHub上给他贡献点儿代码。但是这个实现也不是一天两天的事儿。我如今实在没时间研究。这段儿时间又比較紧迫。我得考虑生计问题啊!

得先活下来。在考虑做贡献的事儿吧。过了年再说吧。

言归正传,我们继续来介绍基于Pub/Sub模式的Demo实现。功能非常easy:

从消息公布端Pub公布一个消息事件OrderCompletedEvent,多个client(如SubA和SubB)订阅该事件OrderCompletedEvent。

那么当Pub公布消息后,SubA和SubB就行收到该消息OrderCompletedEvent。

SubA和SubB接收到消息后,依据须要进行一定的处理。

然后他们都会公布一个WorkDoneEvent事件消息。这次服务端订阅WorkDoneEvent消息。

当SubA和SubB公布WorkDoneEvent消息后。Pub端就行接收到该消息WorkDoneEvent。

PS:消息的公布端与订阅端为什么使用两个不同的消息呢?由于假设使用同一个消息的话。上面的实现,将会形成死循环。

原因就是启动的Shuttle ESB实例后,该实例会监听一个或多个给定的消息队列,假设公布端和订阅端监听听一个队列,就形成死循环了。

以下介绍一些开发实例的准备工作

1、安装微软消的息队列:MSMQ

详细安装请參见:Shuttle ESB(一):入门实例

2、创建数据库并初始化数据库表队列

在SqlServer中创建数据库:shuttle(可自己定义数据库名称)。然后执行“{root}\Shuttle.ESB\source\Shuttle.ESB.SqlServer\Scripts\SubscriptionManagerCreate.sql”脚本(在源代码中。本样例中提供该脚本),创建以及初始化SqlServer表队列。

3、安装NuGet插件

它就是一款管理第三方dll的插件。

关于NuGet的安装、使用,网上有一大堆,这里我就不具体介绍了。大家自己百度就可以。

具体实例,下篇文章继续介绍。

时间: 2024-10-09 22:14:54

Shuttle ESB(四)——公布订阅模式实例介绍(1)的相关文章

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

前,我的重点是关注的三篇文章Shuttle ESB入境和宏观的概念范例. Shuttle ESB模式:请求/对应模式与Pub/Sub模式. 关于这两种模式的区分,请看以下文章的介绍:Shuttle ESB(三)--架构模型介绍(2) 在Shuttle ESB的第一篇文章中,关于入门实例的介绍,是基于Command命令的请求响应模式.这样的模式发送的消息比較简单,是同步的.发送消息端与接收消息端的行为耦合性比較大.请求发送后,其它进程都会处于等待状态,等待服务端返回响应信息后,client才会进行

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

前面,我已经集中用了三篇文章来讲Shuttle ESB的入门实例与宏观概念.Shuttle ESB一共有两种发送消息的模式:请求/相应模式与Pub/Sub模式. 关于这两种模式的区分,请看下面文章的介绍:Shuttle ESB(三)--架构模型介绍(2) 在Shuttle ESB的第一篇文章中,关于入门实例的介绍,是基于Command命令的请求响应模式.这种模式发送的消息比较简单,是同步的.发送消息端与接收消息端的行为耦合性比较大.请求发送后,其他进程都会处于等待状态,等待服务端返回响应信息后,

Shuttle ESB(五)——发布订阅模式实例实现(2)

我们接上篇文章,继续来介绍Shuttle ESB的Pub/Sub模式. 上一篇文章中,我们已经用语言描述了一个用ESB实现的场景,下面给我给出具体的代码实现. 首先,我们需要了解一下Shuttle ESB各个dll的功能: Shuttle.Core.Data:轻量级框架,使用ADO.NET的工厂和接口 Shuttle.Core.Domain:提供事件调度支持 Shuttle.Core.Host:通用主机,它能在控制台应用或者windows服务中运行 Shuttle.Core.Infrastruc

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

上一篇文章中,介绍了Shuttle ESB架构模型中的三个重要部分.今天,我们继续介绍剩余的三个内容:模式和消息路由. 四.模式 Request/Response(请求/响应模式) 对基于Request/Response消息机制的内容,你可以看WiKi的一些文章:http://en.wikipedia.org/wiki/Request-response 向一个终端发送请求,执行某项功能,你可以发送一个命令消息: bus.Send(new RequestMessage()); 虽然这是一个非常简单

Shuttle ESB(二)——架构模型介绍

该部分包含如下五部分内容,限于篇幅,本文先介绍前三个:概念.消息类型.耦合. 一.概念 二.消息类型 三.耦合 四.模式 五.消息路由 概念 本位中的所有代码,不是一个完整的例子,也不是一个vs解决方案.它向我们介绍了,在Shuttle ESB里面一些比较重要的概念.在Shuttle ESB入门实例 里面,有一个简单的实现,将这些概念融合在了一起,大家可以结合实例,理解本文的概念. Shuttle ESB的基本组成:消息.队列和服务总线 每一个服务总线实例都是相关联的,因此只有一个输入队列,注意

Shuttle ESB(一)——入门实例

下载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.micro

activeMQ公布订阅模式中中经常使用工具类

package com.jms; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.jms.BytesMessage; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import

Mina、Netty、Twisted一起学(七):公布/订阅(Publish/Subscribe)

消息传递有非常多种方式.请求/响应(Request/Reply)是最经常使用的.在前面的博文的样例中.非常多都是採用请求/响应的方式.当server接收到消息后,会马上write回写一条消息到client. HTTP协议也是基于请求/响应的方式. 可是请求/响应并不能满足全部的消息传递的需求,有些需求可能须要服务端主动推送消息到client,而不是被动的等待请求后再给出响应. 公布/订阅(Publish/Subscribe)是一种server主动发送消息到client的消息传递方式.订阅者Sub

ActiveMQ入门系列三:发布/订阅模式

在上一篇<ActiveMQ入门系列二:入门代码实例(点对点模式)>中提到了ActiveMQ中的两种模式:点对点模式(PTP)和发布/订阅模式(Pub & Sub),详细介绍了点对点模式并用代码实例进行说明,今天就介绍下发布/订阅模式. 一.理论基础 发布/订阅模式的工作示意图: 消息生产者将消息(发布)到topic中,可以同时有多个消息消费者(订阅)消费该消息. 和点对点方式不同,发布到topic的消息会被所有订阅者消费. 当生产者发布消息,不管是否有消费者,都不会保存消息. 一定要先