您好,我正在调查我遇到的问题,我在我的fifo服务总线设置中遇到了各种问题,其中锁定令牌未找到或已过期。
所以我再次查看了dokumentation,并说它在完成消息时是可选的。
我一直在"完成消息中设置会话ID,因为我在队列中使用会话ID,就像我在使用fifo设置一样。
在"队列中的完整消息"中使用会话ID之间的区别是什么?连接器?
无法在文档中找到相关说明。
答案 0 :(得分:0)
会话ID的目的是维护队列中消息之间的排序。
假设有多个服务同时从哈利波特书中转储文本,服务发送的序列字将在队列中交错。此外,只要其中一个服务完成阅读一本书,它就会继续启动下一本书,而这本书并未被任何其他服务阅读。您如何识别给定消息来自给定的书籍。
此处会话ID开始起作用,一旦服务开始读取某本书,它将决定一个新的唯一会话ID,并将其分配给它读取它的每个单词(即它发送给队列的消息)从那本书。这样,当您的客户端读取队列中的消息时,它可以获取一个特定的会话ID值并继续阅读带有该会话ID的消息。这样,即使队列中的文字都是从不同的书中混淆,你的客户也不会混淆书籍,并且会保留阅读单词的顺序。
此外,正在读取具有特定会话ID的消息的客户端将锁定具有该会话ID的所有到达的消息(以及将来到达的消息)。因此,其他客户不会阅读这些消息。也就是说,您可以让多个客户端并行运行,从不同的书籍中读取文本而不会混淆。
锁定令牌是用于完成消息的值。会话ID对于完成消息并不重要,它具有完全不同的目的,这就是为什么它在这里是可选的。可能是这样的情况,当您处理消息时,您的客户端花费的时间超过了锁定令牌的到期时间。您可以在azure门户中的设置中更改锁定令牌对队列有效的时间。
阅读本文以获取更多信息:Message sessions: first in, first out (FIFO)