Is there a product (ideally open source, but not necessary), that would enable a zero dependency deployment? every service bus or queue library I've been able to find has a dependency on one of the queue apps (like msmq), or a database. I would like a very lightweight solution that I can just add a reference to my application, build it, and deploy it with as little configuration as possible.
是否有可以实现零依赖部署的产品(理想情况下是开源的,但不是必需的)?我能够找到的每个服务总线或队列库都依赖于其中一个队列应用程序(如msmq)或数据库。我想要一个非常轻量级的解决方案,我可以添加对我的应用程序的引用,构建它,并使用尽可能少的配置部署它。
In an ideal world, the queue/service bus would run on IIS, and allow web and rich clients to talk to it.
在理想的世界中,队列/服务总线将在IIS上运行,并允许Web和富客户端与之通信。
Such a tool would be ideal for fast prototyping of large distributed systems on a local development machine.
这样的工具对于本地开发机器上的大型分布式系统的快速原型设计是理想的。
10 个解决方案
#1
Rhino Queues from Ayende is exactly what you are looking for, this is the blog post introducing it:
来自Ayende的Rhino Queues正是您所寻找的,这是介绍它的博客文章:
http://ayende.com/Blog/archive/2008/08/01/Rhino-Queues.aspx
I think that all of the limitations mentioned in this post have been fixed since then.
我认为从那时起,这篇文章中提到的所有限制都已得到修复。
From the blog post, what rhino queues is:
从博客文章中,犀牛排队的是:
- XCopyable, Zero Administration, Embedded, Async queuing service
- Robust in the face of networking
- outages System.Transactions support
- Fast
- Works over HTTP
XCopyable,零管理,嵌入式,异步排队服务
在网络方面表现强劲
中断System.Transactions支持
通过HTTP工作
#2
In a similar vein to ShuggyCoUk's suggestion, you could rig up a queue (or queues) using the Windows built-in ESENT database (comes already installed with Windows). There is a managed code access library (open source): http://www.codeplex.com/ManagedEsent. If you stick with writing / reading CLOBs or BLOBs, it should work just fine. If you want to be really clever, you can use NServiceBus and write (contribute?) ESENT-flavored subscription storage and transports. There are some forays into using ESENT on Ayende's blog as well (you'll have to poke around his SVN repository for the juicy bits).
与ShuggyCoUk的建议类似,您可以使用Windows内置的ESENT数据库(已安装Windows)来安排队列(或队列)。有一个托管代码访问库(开源):http://www.codeplex.com/ManagedEsent。如果你坚持写/读CLOB或BLOB,它应该工作得很好。如果你想要非常聪明,你可以使用NServiceBus并编写(贡献?)ESENT风格的订阅存储和传输。在Ayende的博客上也有一些使用ESENT的尝试(你必须在他的SVN存储库中查找多汁的部分)。
#3
If you're happy to be:
如果你很高兴成为:
- Windows specific
- Limited to the local domain
- Seriously limited in the message size supported
- Wrap the underlying win32 calls in P/Invoke
- Deal with the polling yourself
- Deal with the hacks needed to allow back and forth communication
- Deal with the shared config needed to keep the names in sync
仅限于本地域名
严重限制支持的邮件大小
在P / Invoke中包装底层的win32调用
自己处理投票
处理允许来回通信所需的黑客攻击
处理保持名称同步所需的共享配置
Then a quick wrapper around the windows MailSlot API might be sufficient.
然后围绕Windows MailSlot API快速包装可能就足够了。
This simple example is a reasonable basis to start.
这个简单的例子是一个合理的基础。
This article has some further information but assumes the use case is via a control (rather than a Component as it should be) as well as some poor WinForms integration so should be considered for incidental reading rather than a basis for any library.
本文有一些进一步的信息,但假设用例是通过控件(而不是它应该是一个组件)以及一些不良的WinForms集成,所以应该考虑偶然阅读而不是任何库的基础。
This article is C++ but is of a higher standard (and a commenter has extended it to support the batching of larger messages into several smaller ones).
本文是C ++,但具有更高的标准(并且评论者已将其扩展为支持将较大的消息批处理为几个较小的消息)。
You get 424 bytes (so with .Net 212 chars) you may want to drop to ASCII to double your useful message length if you are talking text.
你得到424字节(因此使用.Net 212字符)如果你正在谈论文本,你可能想要删除ASCII以使你的有用消息长度加倍。
Note that despite its simplicity, limitations and lack of features it does provide multicast delivery, something often complex to layer on a point to point protocol yourself.
请注意,尽管它具有简单性,局限性和缺乏功能,但它确实提供了多播传送,但是在自己的点对点协议上通常很复杂。
#4
This ayende post provides and interesting comparison of three service buses. We use NServiceBus and think if it's not clear that Udi Dahan would respond to how you'd plug in non-dependent queue.
这个ayende帖子提供了三种服务总线的有趣比较。我们使用NServiceBus并认为如果不清楚Udi Dahan是否会响应你如何插入非依赖队列。
We work using MSMQ happily but there are other options and in theory it should be open to practically anything, given that you may lose some reliability and durability depending on your choice.
我们愉快地使用MSMQ,但还有其他选择,理论上它应该对几乎任何东西开放,因为根据您的选择,您可能会失去一些可靠性和耐用性。
#6
We moved our projects from MSMQ to ActiveMQ. its really better :)
ActiveMQ is open source queue ,based on Apache web server.
We used him in production on high frequently data workflow, where msmq have a lot of problem (we work with msmq a year)
The csharp implementation is nms
我们将项目从MSMQ转移到ActiveMQ。它真的更好:) ActiveMQ是基于Apache Web服务器的开源队列。我们在高频数据工作流程中使用他进行生产,其中msmq有很多问题(我们使用msmq一年)csharp实现是nms
#7
I'm currently working on an open source WCF based service bus. You can find it here: http://rockbus.codeplex.com/. It supports dynamic (@run-time) subscriptions, subcription repository (database), pluggable transports, XPath based content-based routing, transactional delivery over wcf protocols, roundrobin delivery, pluggable subscription evaluation, and more. Have a look!
我目前正在开发基于WCF的开源服务总线。你可以在这里找到它:http://rockbus.codeplex.com/。它支持动态(@运行时)订阅,订阅存储库(数据库),可插拔传输,基于XPath的基于内容的路由,基于wcf协议的事务传递,roundrobin传递,可插入订阅评估等。看一看!
#8
Have you thought about using a service like IronMQ by http://Iron.io?
您是否考虑过使用像IronMQ这样的服务http://Iron.io?
You wouldn't have any dependencies, could quickly prototype apps without setting up any queue infrastructure, and it's highly available and fast.
您不会有任何依赖关系,可以在不设置任何队列基础结构的情况下快速构建应用程序原型,并且它具有高可用性和快速性。
There is not currently a locally installable version but it's based on the upcoming OpenStack protocol so there will be.
目前没有可本地安装的版本,但它基于即将推出的OpenStack协议,因此会有。
Btw I work for Iron.
顺便说一句,我为铁工作。
#9
Try https://github.com/mcintyre321/PieQ - this is my attempt to write a threadsafe, persistent, zero-config, embedded work queue. It probably needs a little love, but I think it might be the kind of tool you are looking for.
尝试https://github.com/mcintyre321/PieQ - 这是我尝试编写线程安全,持久,零配置,嵌入式工作队列。它可能需要一点爱,但我认为它可能是你正在寻找的那种工具。
#10
I have developed an InMemory JMS library which can be used to in testing JMS applications without really connecting to JMS providers/server (Think of hsqldb). You don't have to deal with connection or protocol or anything, all you need to do is to send and receive messages.
我开发了一个InMemory JMS库,可用于测试JMS应用程序而无需真正连接到JMS提供程序/服务器(想想hsqldb)。您不必处理连接或协议或任何事情,您只需发送和接收消息即可。
#1
Rhino Queues from Ayende is exactly what you are looking for, this is the blog post introducing it:
来自Ayende的Rhino Queues正是您所寻找的,这是介绍它的博客文章:
http://ayende.com/Blog/archive/2008/08/01/Rhino-Queues.aspx
I think that all of the limitations mentioned in this post have been fixed since then.
我认为从那时起,这篇文章中提到的所有限制都已得到修复。
From the blog post, what rhino queues is:
从博客文章中,犀牛排队的是:
- XCopyable, Zero Administration, Embedded, Async queuing service
- Robust in the face of networking
- outages System.Transactions support
- Fast
- Works over HTTP
XCopyable,零管理,嵌入式,异步排队服务
在网络方面表现强劲
中断System.Transactions支持
通过HTTP工作
#2
In a similar vein to ShuggyCoUk's suggestion, you could rig up a queue (or queues) using the Windows built-in ESENT database (comes already installed with Windows). There is a managed code access library (open source): http://www.codeplex.com/ManagedEsent. If you stick with writing / reading CLOBs or BLOBs, it should work just fine. If you want to be really clever, you can use NServiceBus and write (contribute?) ESENT-flavored subscription storage and transports. There are some forays into using ESENT on Ayende's blog as well (you'll have to poke around his SVN repository for the juicy bits).
与ShuggyCoUk的建议类似,您可以使用Windows内置的ESENT数据库(已安装Windows)来安排队列(或队列)。有一个托管代码访问库(开源):http://www.codeplex.com/ManagedEsent。如果你坚持写/读CLOB或BLOB,它应该工作得很好。如果你想要非常聪明,你可以使用NServiceBus并编写(贡献?)ESENT风格的订阅存储和传输。在Ayende的博客上也有一些使用ESENT的尝试(你必须在他的SVN存储库中查找多汁的部分)。
#3
If you're happy to be:
如果你很高兴成为:
- Windows specific
- Limited to the local domain
- Seriously limited in the message size supported
- Wrap the underlying win32 calls in P/Invoke
- Deal with the polling yourself
- Deal with the hacks needed to allow back and forth communication
- Deal with the shared config needed to keep the names in sync
仅限于本地域名
严重限制支持的邮件大小
在P / Invoke中包装底层的win32调用
自己处理投票
处理允许来回通信所需的黑客攻击
处理保持名称同步所需的共享配置
Then a quick wrapper around the windows MailSlot API might be sufficient.
然后围绕Windows MailSlot API快速包装可能就足够了。
This simple example is a reasonable basis to start.
这个简单的例子是一个合理的基础。
This article has some further information but assumes the use case is via a control (rather than a Component as it should be) as well as some poor WinForms integration so should be considered for incidental reading rather than a basis for any library.
本文有一些进一步的信息,但假设用例是通过控件(而不是它应该是一个组件)以及一些不良的WinForms集成,所以应该考虑偶然阅读而不是任何库的基础。
This article is C++ but is of a higher standard (and a commenter has extended it to support the batching of larger messages into several smaller ones).
本文是C ++,但具有更高的标准(并且评论者已将其扩展为支持将较大的消息批处理为几个较小的消息)。
You get 424 bytes (so with .Net 212 chars) you may want to drop to ASCII to double your useful message length if you are talking text.
你得到424字节(因此使用.Net 212字符)如果你正在谈论文本,你可能想要删除ASCII以使你的有用消息长度加倍。
Note that despite its simplicity, limitations and lack of features it does provide multicast delivery, something often complex to layer on a point to point protocol yourself.
请注意,尽管它具有简单性,局限性和缺乏功能,但它确实提供了多播传送,但是在自己的点对点协议上通常很复杂。
#4
This ayende post provides and interesting comparison of three service buses. We use NServiceBus and think if it's not clear that Udi Dahan would respond to how you'd plug in non-dependent queue.
这个ayende帖子提供了三种服务总线的有趣比较。我们使用NServiceBus并认为如果不清楚Udi Dahan是否会响应你如何插入非依赖队列。
We work using MSMQ happily but there are other options and in theory it should be open to practically anything, given that you may lose some reliability and durability depending on your choice.
我们愉快地使用MSMQ,但还有其他选择,理论上它应该对几乎任何东西开放,因为根据您的选择,您可能会失去一些可靠性和耐用性。
#5
Why not Amazon's message service Simple Queue Service?
为什么亚马逊的消息服务简单队列服务?
#6
We moved our projects from MSMQ to ActiveMQ. its really better :)
ActiveMQ is open source queue ,based on Apache web server.
We used him in production on high frequently data workflow, where msmq have a lot of problem (we work with msmq a year)
The csharp implementation is nms
我们将项目从MSMQ转移到ActiveMQ。它真的更好:) ActiveMQ是基于Apache Web服务器的开源队列。我们在高频数据工作流程中使用他进行生产,其中msmq有很多问题(我们使用msmq一年)csharp实现是nms
#7
I'm currently working on an open source WCF based service bus. You can find it here: http://rockbus.codeplex.com/. It supports dynamic (@run-time) subscriptions, subcription repository (database), pluggable transports, XPath based content-based routing, transactional delivery over wcf protocols, roundrobin delivery, pluggable subscription evaluation, and more. Have a look!
我目前正在开发基于WCF的开源服务总线。你可以在这里找到它:http://rockbus.codeplex.com/。它支持动态(@运行时)订阅,订阅存储库(数据库),可插拔传输,基于XPath的基于内容的路由,基于wcf协议的事务传递,roundrobin传递,可插入订阅评估等。看一看!
#8
Have you thought about using a service like IronMQ by http://Iron.io?
您是否考虑过使用像IronMQ这样的服务http://Iron.io?
You wouldn't have any dependencies, could quickly prototype apps without setting up any queue infrastructure, and it's highly available and fast.
您不会有任何依赖关系,可以在不设置任何队列基础结构的情况下快速构建应用程序原型,并且它具有高可用性和快速性。
There is not currently a locally installable version but it's based on the upcoming OpenStack protocol so there will be.
目前没有可本地安装的版本,但它基于即将推出的OpenStack协议,因此会有。
Btw I work for Iron.
顺便说一句,我为铁工作。
#9
Try https://github.com/mcintyre321/PieQ - this is my attempt to write a threadsafe, persistent, zero-config, embedded work queue. It probably needs a little love, but I think it might be the kind of tool you are looking for.
尝试https://github.com/mcintyre321/PieQ - 这是我尝试编写线程安全,持久,零配置,嵌入式工作队列。它可能需要一点爱,但我认为它可能是你正在寻找的那种工具。
#10
I have developed an InMemory JMS library which can be used to in testing JMS applications without really connecting to JMS providers/server (Think of hsqldb). You don't have to deal with connection or protocol or anything, all you need to do is to send and receive messages.
我开发了一个InMemory JMS库,可用于测试JMS应用程序而无需真正连接到JMS提供程序/服务器(想想hsqldb)。您不必处理连接或协议或任何事情,您只需发送和接收消息即可。