【问题标题】:Is there any free library that implements message queuing similar to MSMQ (Microsoft Message Queuing)?是否有任何实现类似于 MSMQ(Microsoft 消息队列)的消息队列的免费库?
【发布时间】:2014-08-28 21:47:12
【问题描述】:

我有兴趣使用具有类似于 MSMQ 功能的免费库在 win 表单应用程序中的 3 个应用程序域之间发送/接收消息。 我只需要私有队列功能(没有公共队列或 AD 支持) 请提供链接和一些优点/缺点。如果您认为需要更多分数来获得更详细的细节,我很乐意提出子问题。

注意:很遗憾,我有一些用户没有 Windows XP 专业版(MSMQ 不可用) 我看到了 Apache ActiveMQ 和 rabbit MQ,但对于我需要做的事情来说似乎有点矫枉过正。 http://activemq.apache.org/ http://www.rabbitmq.com/ 可以使用受命名互斥锁保护的单例队列来实现此功能,但如果有人已经这样做了,我不想花时间。

【问题讨论】:

    标签: c# winforms msmq appdomain


    【解决方案1】:

    Rhino Queues。作者被认为是一个相当不错的开发者。

    【讨论】:

      【解决方案2】:

      NServiceBus 使用 shared memory transport 怎么样?创建者 Udi Dahan 在基于消息的架构领域是一位备受尊敬的人。

      【讨论】:

      • 我会检查并通知您
      【解决方案3】:

      如果它们都在同一个应用程序中,那么共享一个同步队列就是你想要的,看看 MSDN 中的Queue.Synchronized 方法,它为你提供了一个线程安全的队列。

      【讨论】:

      • @Tim,Queue.Synchronized 是我正在寻找的……谢谢。
      【解决方案4】:

      在某些时候,必须有一些特定于客户端的代码来接受消息。如果用户需要在他们的机器上接受消息,这听起来像是一个智能客户端的情况。在 Windows 世界中,有一个智能客户端可以发送消息,并允许用户以断开连接的方式处理数据。

      我无法想象任何一个库会允许在不同操作系统上进行消息传递。即使使用单例,也必须有一些跨平台的方式来发送/接收消息。似乎客户端总是必须是特定于操作系统的。

      也许可以在非 Windows 端尝试 Mono。您可以使用一个工具来查看第三方库是否具有无法在 Mono 中运行的依赖项。它与 Visual Studio 的 Mono 工具一起发布。它被称为 Mono Migration Analyzer (MoMA)。

      【讨论】:

        【解决方案5】:

        另见此系统:

        http://www.codeproject.com/Articles/193611/DotNetMQ-A-Complete-Message-Queue-System-for-NET

        DotNetMQ 是一个开源消息代理,具有以下几个特性:

        持久或非持久消息传递。 即使在系统崩溃时也能保证持久消息的传递。 在自定义机器图中自动和手动路由消息。 支持多个数据库(目前为 MS SQL Server、MySQL、SQLite 和基于内存的存储)。 支持不存储,直接发送样式消息。 支持请求/回复风格的消息传递。 易于使用的客户端库与 DotNetMQ 消息代理进行通信。 内置框架,可轻松在消息队列上构建 RMI 服务。 支持向 ASP.NET Web 服务传递消息。 基于 GUI 的管理和监控工具。 易于安装、管理和使用。

        【讨论】:

          【解决方案6】:

          你可能想看看 Retlang http://code.google.com/p/retlang/

          【讨论】:

          • retlang 的哪一部分与这个问题最相关?一些解释或特定代码的链接会有所帮助。
          • 嗯,Retlang 本质上是一个应用程序内多线程消息传递库,直接支持专用 UI​​ 线程 (FormFiber)。我认为除了code.google.com/p/retlang/source/browse/trunk/src/#src 上的代码示例之外,周围没有太多文档作者还有一个博客:jroller.com/mrettig
          • 我会检查,但乍一看它只是一个进程,一个应用程序域多线程消息库,我需要跨应用程序域支持。
          • 我看不出 Retlang 如何真正与排队库相提并论,或者与这个问题相关。
          猜你喜欢
          • 1970-01-01
          • 2023-03-28
          • 2013-02-21
          • 2011-05-12
          • 2015-01-24
          • 1970-01-01
          • 2010-09-28
          • 2012-03-27
          • 2010-12-10
          相关资源
          最近更新 更多