- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
上下文:有关服务总线队列和消息 session 的 MSDN 文档表示“当 MessageSession 对象被接受并且由客户端持有时,该客户端对该 session 的所有消息持有排他锁”存在于队列或订阅中的 SessionId,以及在 session 保持期间仍然到达的具有该 SessionId 的所有消息。
调用 Close 或 CloseAsync 时,或者当应用程序无法执行关闭操作时锁过期时,锁将被释放”
我的解释:我将上述解释为 MessageSession 对队列 session 具有锁定,这就是为什么其他客户端无法使用相同的 SessionID 调用 AcceptMessageSessionAsync - 他们会获取 SessionCannotBeLockedException。
问题:假设我的解释是准确的,在应用程序无法执行 Close 操作的情况下,什么控制 MessageSession 锁定何时过期?我知道队列上的 LockDuration 无法实现此目的,因为我尝试过。
示例代码:
var sessionClient = new SessionClient(ServiceBusConnectionString, QueueName, ReceiveMode.PeekLock);
var session = await sessionClient.AcceptMessageSessionAsync("0");
// ReceiveAsync seems to wait for 60 seconds,
// even if the LockDuration on the queue is 30 seconds.
var message = await session.ReceiveAsync();
// Once ReceiveAsync returns, I'd expect to receive a SessionLockLost
// exception at some point since the lock should expire, according to MSDN
Console.ReadKey();
最佳答案
你的解释是正确的。控制 session 锁定的是与代理的连接。一旦连接丢失, session 就可以由另一个客户端打开。 LockDuration
适用于单个消息,而不是 session 。因此,只要客户端通过打开的 session 连接到代理,该 session 就会保持锁定状态。一旦连接丢失, session 将由另一个请求客户端打开。但一次只能有一个客户端来确保有序的消息处理。
关于azure - 如果客户端无法调用 Close,那么什么控制 MessageSession 锁何时到期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55109872/
上下文:有关服务总线队列和消息 session 的 MSDN 文档表示“当 MessageSession 对象被接受并且由客户端持有时,该客户端对该 session 的所有消息持有排他锁”存在于队列或
我们使用 Azure 服务总线队列,并使用 AcceptMessageSession 接收消息(代码如下)。 接受 MessageSession 成功,但是当我在 MessageSession 上调用
上下文:有关服务总线队列和消息 session 的 MSDN 文档表示“当 MessageSession 对象被接受并且由客户端持有时,该客户端对该 session 的所有消息持有排他锁”存在于队列或
我们使用 Azure 服务总线队列,并使用 AcceptMessageSession 接收消息(代码如下)。 接受 MessageSession 成功,但是当我在 MessageSession 上调用
上下文:有关服务总线队列和消息 session 的 MSDN 文档表示“当 MessageSession 对象被接受并且由客户端持有时,该客户端对该 session 的所有消息持有排他锁”存在于队列或
当要接收多条消息时,我在关闭 MessageSession 时遇到问题...我等待所有序列进入,然后尝试“Complete()”中的所有消息 session 。我尝试了很多不同的方法,从迭代收到的消息
我是一名优秀的程序员,十分优秀!