1
2
使用游标在MSMQ队列中搜索来自特定客户机的消息可能效率低下,而且无法扩展。
MSMQ无法自动创建队列。所有消息必须先发送到已知队列。不过,您自己的定制调度服务可以根据需要创建新队列,并将消息的副本放入队列中。 [[我避免说“move”消息,因为您不能用应用程序代码执行此操作;您只能读取消息并使用原始数据创建新消息。例如,在使用源日志记录时,这种区别非常重要。]] 干杯 约翰·布雷克韦尔 |
2
2
使用像NServiceBus这样的ESB似乎是解决问题的好方法。但是根据你的概念描述,有一些事情要考虑。让我们使用NServiceBus作为可能的ESB解决方案,一步一步地了解您的需求: 使用NServiceBus很容易做到这一点。你可以公车。发送(信息)来自客户。如果您的客户需要答案,您可以使用巴士。返回(错误代码)。你提到“成功在于收到了信息”。如果您使用像NServiceBus这样的ESB, it's up to the messaging platform the deliver the message . 所以,如果你的公车。发送如果不引发异常,则可以确保消息已正确发送。因此,您可能不必将成功/失败消息发送回客户端。
使用NServiceBus时,可以通过设置“NumberOfWorkerThreads”选项来配置工作线程的数量。如果您的服务器有多个核心/cpu,则可以使用此设置来平衡工作负载。 根据您的要求,这可能会导致问题。ESB一般不承诺处理 the messages in-order ,如果它们有许多线程处理消息。在NServiceBus的情况下,您可以将一组消息从客户机发送到总线并 these will be processed in-order. 此外,还可以通过使用 Sagas .
当使用ESB解决方案时,您的服务器不必为客户机工作。客户端仍然可以发送消息,服务器将在恢复联机后立即开始处理这些消息。这里有一个 small introduction on this.
你能详细介绍一下吗?我不确定你的设计。 |
LearningToCode · 使用C的MSMQ队列路径# 7 年前 |
Pearl · 如何从队列中一次获取一条MSMQ消息 7 年前 |
Jim · 为创建的MSMQ队列设置PROPID_Q_JOURNAL 8 年前 |
bilpor · MSMQ忽略事务作用域 9 年前 |
Leon · C#如何以编程方式检查消息队列是否在域模式下工作 9 年前 |
ETFairfax · 无法加载DLL“mqrt.DLL” 11 年前 |
Uri Goren · ASP.Net Web API中的消息队列 11 年前 |