【发布时间】:2015-01-05 16:22:42
【问题描述】:
我一直在尝试创建一个 .NET RabbitMQ 消费者应用程序,有些问题我无法通过谷歌找到答案,所以我想我应该在这里问他们:
在规范中我发现
IConnection.CreateModel返回的IModel实例不是线程安全的。这是否仅与调用IModel.BasicPublish方法有关(如果我理解正确,那么 BasicPublish/BasicAck/BasickNack/ets 不是线程安全的)还是这也包括注册消费者?换句话说,在IModel.HandleBasicDeliver周围使用相同的锁就足够了,还是我还必须使用相同的锁来包裹IBasicConsumer.HandleBasicDelivery的主体?IModel.BasicConsume有一个布尔参数noAck,我找不到任何帮助。将此参数设置为 True 是否意味着通过IBasicConsumer.HandleBasicDeliver传递消息时不会进行自动确认?如果我将其设置为 False,那么 RabbitMQ .Net 库将自动为所有收到的消息发送 Ack(s)?IBasicConsumer方法调用是否已序列化?换句话说,IBasicConsumer.HandleBasicDeliver是否会在IBasicConsumer.HandleBasicDeliver已在处理消息时被调用?
【问题讨论】:
标签: .net multithreading rabbitmq