消息代理(Kafka,RabbitMQ)VS服务总线(nServiceBus)

时间:2018-06-26 14:44:57

标签: .net wcf apache-kafka rabbitmq nservicebus

我已经阅读了很多有关三个提到的系统的信息。但是我仍然不确定该使用什么。他们似乎都满足了我的要求:

我希望在另一个服务触发事件/命令/消息时更新一个或多个客户端服务。我当前正在运行WCF服务,并且客户端服务可以主动从其他服务请求更新数据。这应该通过消息代理/服务总线进行更改。 我也不在乎客户端是否脱机并且不接收更新,因为无论如何,它在联机时都会自动通过WCF获取最新数据。 这就是为什么我认为Kafka是错误的方法。另一方面,我在其他公司的安全相关环境中部署了该软件。而且由于这是一个旧应用程序(没有docker或不容易部署),需要安装Erlang,因此无法打开RabbitMQ的所有端口。这给了我NServiceBus

  1. 仅运行NServiceBus而不是常见的RabbitMQ+NServiceBus变体时,我是否会错过重要的事情吗?

  2. 似乎只要我专门使用.net堆栈,我对NServiceBus就会满意吗?

  3. 由于我已经有WCF来轮询更新的数据,因此您应该仅发送命令来发起WCF调用。还是应该直接通过邮件系统直接发送更新的数据?

1 个答案:

答案 0 :(得分:0)

注意:我是NServiceBus的制造商Particular Software的开发人员。如果这听起来像是商业广告,我对此表示歉意。

  

因为我已经有WCF可以轮询更新的数据

我不确定您的意思。可能是您已经在MSMQ上通过WCF使用消息传递了。这是可行的,也是可行的解决方案。 MSMQ是排队技术,WCF是在MSMQ之上的抽象。

MSMQ,RabbitMQ,Azure服务总线,Amazon SQS都是排队技术,尽管MSMQ有点不同,因为它更像一种总线样式,并且分布在计算机之间。

NServiceBus是这些排队技术之上的抽象。 NServiceBus使您可以专注于开发功能,而不必在单一排队技术之上编写管道代码。最重要的是,它增加了许多附加功能。如果您决定不使用NServiceBus,则必须自己构建其中一些功能。完全可以,但是需要时间。

回答特定问题

  1. 如果使用NServiceBus,您仍然需要一种排队技术,我们称之为transport。 MSMQ或RabbitMQ或任何您想要的东西。
  2. 可以肯定,但是仍然可以本地集成,就像在Java和.NET之间进行消息传递时一样
  3. 这取决于。通过消息发送消息通常更可靠,更快/更容易,因为您不必执行WCF调用。除此之外,您可以慢慢删除WCF,并减少具有WCF知识的开发人员。

如果您还有其他问题,请随时通过https://particular.net/support/与我们联系