【发布时间】:2017-02-22 17:26:16
【问题描述】:
我正在围绕 EasyNetQ 编写一个包装器来将消息发布到 RabbitMQ。有大量消息需要发布。我应该使用 using 模式使用 IBus 发布消息,还是应该将 IBus 类型 var 声明为类级别的静态 var 并在应用程序结束时处理?
using (IBus bus = RabbitHutch.CreateBus(rabbitMQConnectionString))
{
bus.publish("ss");
}
谢谢
【问题讨论】:
-
这主要是一个基于意见的问题,我会说没有正确的答案,取决于上下文。为什么不让应用程序选择是创建静态总线还是实例化它?
-
有大量消息需要发布。我主要关心多次创建和处理 IBus 实例。另一方面,如果我将 IBus 类型 var 作为静态类级别成员,我担心并发问题。我可以应用锁定,但这会影响性能
-
为什么并发让您担心消息队列到位?来自队列的消息仅由订阅应用程序出队一次。无论如何,锁定总线实例不会阻止应用程序多次发送相同的消息。