I have been trying to create a .NET RabbitMQ consumer application and there are some questions where I can not find answer through google so I thought I should ask them here:
In the specification I've found that the
IModelinstance returned by theIConnection.CreateModelis not thread-safe. Is this related only to calling theIModel.BasicPublishmethod (if I understand correctly then BasicPublish/BasicAck/BasickNack/ets are not thread-safe) or does this also include the registered consumer? In other words is it sufficient to use the same lock aroundIModel.HandleBasicDeliveror do I also have to have use the same lock to wrap the body ofIBasicConsumer.HandleBasicDelivery?IModel.BasicConsumehas a boolean parameternoAckwhich I can not find any help for. Does setting this parameter to True mean that no auto-acknowledgment will be done when messages are delivered viaIBasicConsumer.HandleBasicDeliver? If I set it to False then the RabbitMQ .Net library will automatically send Ack(s) for all received messages?Are the
IBasicConsumermethods calls serialized? In other words willIBasicConsumer.HandleBasicDeliverbe called while a message is already being handled byIBasicConsumer.HandleBasicDeliver?