首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NServiceBus与兔MQ或卡夫卡

NServiceBus与兔MQ或卡夫卡
EN

Stack Overflow用户
提问于 2016-06-29 15:03:39
回答 2查看 16.2K关注 0票数 81

我正在努力学习信息传递系统。我发现RabbitMq和NServiceBus在几个地方一起使用。我的问题是

  1. 如果我正在使用RabbitMQ,那么为什么我需要NServiceBus呢?反之亦然
  2. 除了卡夫卡( NServiceBus )或卡夫卡( RabbitMQ )之外,能做什么?
  3. 我能用NServiceBus和卡夫卡在一起吗?或者Apache-Kafka不需要NServiceBus。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-30 13:48:02

几年前,我也问过自己同样的问题。我在查看NServiceBus以处理不同的消息队列,但问题是相同的。

我决定不使用NServiceBus。

6个月后,我意识到我已经重建了NServiceBus所做的一半.只是更糟糕。

同样的问题是,当您拥有公共语言运行时,您为什么需要带有NServiceBus的.NET框架,或者WinForms,或者XAML,或者.NET附带的任何内置库。

毕竟,CLR还不够吗?

当然不是。拥有代码可以执行的运行时-- MSIL解释器和执行引擎--远远不够高效。

当然,您可以编写接受输入并产生输出的命令行应用程序。但是,尝试构建一个没有公共库(没有内置SQL Server驱动程序)的实际应用程序;没有任何第三方控件或库。构建一个没有System.Windows命名空间的Windows应用程序。

您需要这些库来为您提供集合、数据库访问、窗口对象和UI控件。

类似地,RabbitMQ为您提供了启动和工作所需的一切,但还不足以维持生产力。

当然,您可以获取.NET驱动程序的RabbitMQ,并开始生成和消费消息。

在一段时间内,这会很好。

很快,您将发现自己在驱动程序周围创建了一个包装器,这样您就可以减少需要编写的代码数量。

然后,您将发现自己需要处理ack,并为此创建一个简单的API。

当然,对死信队列的需求会随nack调用而出现,您将在API中将其封装起来--当然,与rabbitmq驱动程序相比,API简化了这一点。

最终,您将需要处理有害消息--格式错误并导致异常的消息。再次,您不希望为此编写一次性代码,因此您将编写一个库来处理它。

名单还在不停地写着。

从现在起的6个月里,您将发现自己正在使用一个只会模仿NServiceBus (或MassTransit或其他您选择的服务总线库)的值和功能的半编写、几乎没有指定的、不可测试的库。

我不会说你必须使用NServiceBus。我想说的是,没有它,您应该学习RabbitMQ是如何工作的。但是,一旦您超越了发送和接收消息的基本知识,NServiceBus和其他服务总线实现的价值就会很快地变得非常明显。

票数 163
EN

Stack Overflow用户

发布于 2017-02-15 11:14:41

现在看来,社区支持NServiceBus中的卡夫卡传输:https://docs.particular.net/nservicebus/kafka/ (我自己还没试过)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38103412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档