【问题标题】:Async Majordomo pattern (Netmq)异步 Majordomo 模式 (Netmq)
【发布时间】:2015-01-17 00:24:41
【问题描述】:

我正在使用 Netmq 在我的前端和后端之间实现可靠、快速和高可用性的通信。

通信流程是: - 客户端连接(xmpp 客户端、websockets 或任何其他客户端类型)并向后端发送消息,并且此消息必须由特定类型的工作人员处理(xmpp 调度程序处理 xmpp 消息) - 调度程序连接(例如 xmpp 调度程序)并向特定的前端客户端(xmpp 客户端)发送消息。

因此通信可以由顶部(客户端)或底部(调度程序)发起。

为了实现上述目标,这里有一个架构模型:

由于我在http://zguide.zeromq.org/page:all 上阅读的内容,这还不可靠,因为某个客户端接收到发送到前端(代理)的消息,并且在知道是否有任何调度程序之前就接受了该消息可以处理我的工作。在这个阶段,我可以丢弃此消息或将其存储,以在将来有工作人员可用时进行处理。这不是一个好的解决方案,因为如果 Broker 长时间无人传送流量,大量消息将在 Broker 上累积。正确的行为是:broker 不应该接受来自客户端的任何消息,或者客户端应该停止发送消息。

这是我想要实现的行为。为了实现这一点,我需要实施 Majordomo Pattern 对吗?可能是 Majordomo 管理界面吧? 问题是我找不到 C# Majordomo 实现的任何好的示例,只有 C、C++ 和 Python 示例。在 Netmq 或任何其他 C# ZMQ 绑定上是否有任何可用的 Majordomo 模式实现?拥有它会很棒,因为仅使用 Netmq 来实现 Majordomo 非常复杂,而且我在这方面还很陌生。

【问题讨论】:

  • 虽然将 C 转换为 C# 可能并不难,但如果您必须直接使用来自 github.com/zeromq/majordomo 的东西,那么您可以将 C 源代码编译为共享库(在 Linux 上:.so,on Windows:.dll)并从您的 C# 执行 P/Invoke(如果您查看此 github 上的 bindings/dotnet 文件夹,您可以看到他们对客户端代码执行的操作完全相同)
  • 有人用过可以在windows和linux下运行的zeromq .net core版本吗?

标签: c# architecture zeromq netmq


【解决方案1】:

我也搜了一下,目前没有例子,大家可以看看已有的例子在:https://github.com/zeromq/netmq/tree/master/src/Samples。

将 czmq majordomo 移植到 netmq 也应该很简单。

【讨论】:

  • 示例代码看起来很旧,同步并且似乎没有人在更新,因为 Netmq 似乎很活跃
猜你喜欢
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多