持久性消息传递/服务总线 - 自己动手或冒险学习曲线?

Nei*_*ell 6 .net message-queue servicebus

我们有一个客户端应用程序需要向服务器发送消息以进行各种通知.为了使客户端可以偶尔运行,我将采用消息队列方法.队列处理将从队列中取出消息并调用Web服务,将其置于另一个队列中以最终进行处理.这个问题是关于客户环境的; 服务器环境已经确定.

我不想使用MSMQ,因为我们无法控制所有客户端PC以正确安装/配置和保护MSMQ,并且由于用于调查MSMQ队列内容的工具质量,支持更具挑战性.SQL Server 2005 Express位于所有计算机上,用于存储应用程序的数据.

我目前有两个选项:

  1. 编写一个相当基本的持久性消息队列,在序列化后将消息存储在表中,然后使用ThreadPool.QueueUserWorkItem这些消息由针对每种消息类型配置的处理程序进行处理.所有System.Transactions.TransactionScope这些只有在成功处理后才会从持久队列中删除.
  2. 使用NServiceBus(这是我们作为一个团队使用的服务总线,因此MassTransit等不是选项)在客户端上,使用本地数据库的Service Broker传输.

我对服务总线的经验很少(我仍然没有真正获得服务总线术语)所以我更关心学习曲线,而不是写一些更简单的东西,以我需要的方式满足我的要求(部署是一个重要的考虑因素.

有人有想法吗?

Nei*_*ell 0

最后,我编写了一个使用自己的 SqlTransport 配置的基本消息总线,以便在引发事件并通知单独的线程处理消息之前,将消息序列化并保存到 SQL Server 数据库表中。