QueueClient.Receive()以什么顺序传递消息? 我一直在进行一些测试,如果你没有完成(),我可以看到一些消息(我猜的最顶层的消息)一遍又一遍地传递。 有没有办法强制它以循环方式交付?
答案 0 :(得分:2)
如果您有一条已发送但尚未完成的消息,则在LockDuration
到期后消息将显示在队列中并再次消耗。您有来完成邮件。如果不这样做,它最终将进入DLQ,但在此之前,您的消费者将多次收到它。
QueueClient.Receive
获取代理(服务器)上可用的任何内容。我不遵循Round Robin交付的想法,因为它是一个队列。你得到了队列中的内容。根据经验,我建议不要依赖消息的顺序。
说,有一个ASB会话功能可以保留和保证有序的传递。如果您正在寻找会话,之前会询问similar question。
答案 1 :(得分:0)
创建QueueClient
时,您可以指定接收模式并将其设置为ReceiveAndDelete
:
QueueClient.CreateFromConnectionString(connectionString, path, ReceiveMode.ReceiveAndDelete);
这样,您就可以在收到邮件后立即将其从队列中删除,而无需拨打Complete
。
如果您不致电Complete
或使用ReceiveAndDelete
,订单将为: