Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分布式桌面应用程序的RabbitMq体系结构决策_C#_Mongodb_Rabbitmq_Easynetq - Fatal编程技术网

C# 分布式桌面应用程序的RabbitMq体系结构决策

C# 分布式桌面应用程序的RabbitMq体系结构决策,c#,mongodb,rabbitmq,easynetq,C#,Mongodb,Rabbitmq,Easynetq,我们正在重新编写零售ERP应用程序的一部分,该应用程序是在.net 4.0 Windows应用程序中编写的,后端服务通过.net远程处理一路连接。我的问题是关于我在此处发现的内容的后续更新问题() 我们的应用程序在体系结构上类似,但在业务功能上稍微复杂一些,它是一个企业应用程序。重新写入的原因是通过分离非关键功能以通过RabbitMQ和使用Mongo DB或Redis缓存的客户机上的主数据缓存(与清单、税务、价格表等变化不大)来提高性能和可靠性 在上面链接中已回答的消息队列前端,我的选择是 将在

我们正在重新编写零售ERP应用程序的一部分,该应用程序是在.net 4.0 Windows应用程序中编写的,后端服务通过.net远程处理一路连接。我的问题是关于我在此处发现的内容的后续更新问题()

我们的应用程序在体系结构上类似,但在业务功能上稍微复杂一些,它是一个企业应用程序。重新写入的原因是通过分离非关键功能以通过RabbitMQ和使用Mongo DB或Redis缓存的客户机上的主数据缓存(与清单、税务、价格表等变化不大)来提高性能和可靠性

在上面链接中已回答的消息队列前端,我的选择是

  • 将在RabbitMQ服务器中为BackOffice服务器中的每个存储创建一个必要的队列,并在启动客户端之前将persistence设置为true
  • 交流将是一次主题交流,每一天
  • 将把收银台队列留在商店的代理上,并且只使用收银台上的应用程序客户端来访问运输数据
  • TILL将没有自己的数据库,除了缓存和直接连接到店内服务器
  • 我现在的问题是,

    • 如果我们理解其中的复杂性,RabbitMQ是更好的选择吗?我们不想以后后悔
    • 在RabbitMQ客户机上,我们只使用带有高级绑定的EasyNetQ。现在,我开始将它与MassTransit进行比较,当我搜索它时,还有一些其他的建议(卡夫卡似乎是另一个更好的候选人,如评论中所建议的)。有没有其他开源插件更适合(开箱即用)这个用例

    希望我已经提供了足够的细节并遵守了指导原则。如果我不是,请原谅。

    RabbitMQ不保留消息顺序。因此,如果你依赖于这一点,那就和卡夫卡一起去吧。这个问题太大了。但是,您可以抽象队列,使其可以是msmq、rabbitmq、Zeromq,并且,为了让您的工作更顺利,您可能需要使用actor模型检查orleans或akka.net作为完整的替代方案。@Karolis对此感到惊讶。然后,如果我选择RabbitMQ,我必须从马车上卸下一些用例。今天我在看卡夫卡的视频。只是担心学习曲线和路障可能会让我回到起点。@Karolis Kafka似乎是一个更好的选择。但我担心的是在Windows上安装卡夫卡所需的自定义安装步骤。此外,由于此应用程序环境将是一些客户的台式PC,因此不会全天候运行。当服务器脱机时,客户端应用程序尝试发送的可能性为1%。除了在客户端使用一些自定义缓存之外,还有更好的缓冲方法吗。