我正在努力学习信息传递系统。我发现RabbitMq和NServiceBus在几个地方一起使用。我的问题是
发布于 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和其他服务总线实现的价值就会很快地变得非常明显。
发布于 2017-02-15 11:14:41
现在看来,社区支持NServiceBus中的卡夫卡传输:https://docs.particular.net/nservicebus/kafka/ (我自己还没试过)。
https://stackoverflow.com/questions/38103412
复制相似问题