没有依赖关系的C#队列或ServiceBus?
是否有可以实现零依赖部署的产品(理想情况下是开源的,但不是必需的)? 我能够找到的每个服务总线或队列库都依赖于其中一个队列应用程序(如msmq)或数据库。 我想要一个非常轻量级的解决方案,我可以添加对我的应用程序的引用,构建它,并使用尽可能少的配置部署它。
在理想的世界中,队列/服务总线将在IIS上运行,并允许Web和富客户端与之通信。
这样的工具对于本地开发机器上的大型分布式系统的快速原型设计是理想的。
来自Ayende的Rhino Queues正是您所寻找的,这是介绍它的博客文章:
http://ayende.com/Blog/archive/2008/08/01/Rhino-Queues.aspx
我认为从那时起,这篇文章中提到的所有限制都已得到修复。
从博客文章中,犀牛排队的是:
- XCopyable,零管理,嵌入式,异步排队服务
- 在网络方面表现强劲
- 中断System.Transactions支持
- 快速
- 通过HTTP工作
与ShuggyCoUk的建议类似,您可以使用Windows内置的ESENT数据库(已安装Windows)来assembly队列(或队列)。 有一个托管代码访问库(开源): http : //www.codeplex.com/ManagedEsent 。 如果你坚持写/读CLOB或BLOB,它应该工作得很好。 如果你想要非常聪明,你可以使用NServiceBus并编写(贡献?)ESENT风格的订阅存储和传输。 在Ayende的博客上也有一些使用ESENT的尝试(你必须在他的SVN存储库中查找多汁的部分)。
如果你很高兴成为:
- 特定于Windows
- 仅限于本地域名
- 严重限制支持的邮件大小
- 在P / Invoke中包装底层的win32调用
- 自己处理投票
- 处理允许来回通信所需的黑客攻击
- 处理保持名称同步所需的共享配置
然后围绕Windows MailSlot API快速包装可能就足够了。
这个简单的例子是一个合理的基础。
本文有一些进一步的信息,但假设用例是通过控件(而不是它应该是一个组件)以及一些糟糕的WinForms集成,所以应该考虑偶然阅读而不是任何库的基础。
本文是C ++,但具有更高的标准(并且评论者已将其扩展为支持将较大的消息批处理为几个较小的消息)。
你得到424字节(因此使用.Net 212字符)如果你正在谈论文本,你可能想要删除ASCII以使你的有用消息长度加倍。
请注意,尽管它具有简单性,局限性和缺乏function,但它确实提供了多播传送,但是在自己的点对点协议上通常很复杂。
这个ayendepost提供了三种服务总线的有趣比较。 我们使用NServiceBus并认为如果不清楚Udi Dahan是否会响应你如何插入非依赖队列。
我们愉快地使用MSMQ,但还有其他选择,理论上它应该对几乎任何东西开放,因为根据您的选择,您可能会失去一些可靠性和耐用性。
为什么亚马逊的消息服务简单队列服务?
我们将项目从MSMQ转移到ActiveMQ 。 它真的更好:)
ActiveMQ是基于Apache Web服务器的开源队列。
我们在高频数据工作流程中使用他进行生产,其中msmq有很多问题(我们使用msmq一年)
csharp实现是nms
我目前正在开发基于WCF的开源服务总线。 你可以在这里找到它: http : //rockbus.codeplex.com/ 。 它支持动态(@运行时)订阅,订阅存储库(数据库),可插拔传输,基于XPath的基于内容的路由,基于wcf协议的事务传递,roundrobin传递,可插入订阅评估等。 看一看!
您是否考虑过使用像IronMQ这样的服务http://Iron.io?
您不会有任何依赖关系,可以在不设置任何队列基础结构的情况下快速构建应用程序原型,并且它具有高可用性和快速性。
目前没有可本地安装的版本,但它基于即将推出的OpenStack协议,因此会有。
顺便说一句,我为铁工作。
尝试https://github.com/mcintyre321/PieQ – 这是我尝试编写线程安全,持久,零配置,嵌入式工作队列。 它可能需要一点爱,但我认为它可能是你正在寻找的那种工具。
我开发了一个InMemory JMS库,可用于测试JMS应用程序而无需真正连接到JMS提供程序/服务器(想想hsqldb)。 您不必处理连接或协议或任何事情,您只需发送和接收消息即可。