为啥我收到“提供的锁无效”。当我尝试使用 LockTocken 删除队列消息时出错

     2023-03-10     20

关键词:

【中文标题】为啥我收到“提供的锁无效”。当我尝试使用 LockTocken 删除队列消息时出错【英文标题】:Why am I getting "The lock supplied is invalid." error when I am trying to delete queue message using LockTocken为什么我收到“提供的锁无效”。当我尝试使用 LockTocken 删除队列消息时出错 【发布时间】:2019-11-02 01:00:48 【问题描述】:

我正在使用 python 语言通过 Azure 总线服务队列发送和接收消息。

使用以下代码从队列中删除消息时,我收到“提供的锁无效。锁已过期,或者消息已从队列中删除”。

sbs.delete_queue_message('taskqueue',5,'ef4e2189-bfef-42ac-ba09-7fd20287f6a9') sbs.delete_queue_message('taskqueue','SequenceNumber','LockToken')

from azure.servicebus.control_client import ServiceBusService, Message, Topic, Rule, DEFAULT_RULE_NAME
key_name = '###############' # SharedAccessKeyName from Azure portal
key_value = '####################' # SharedAccessKey from Azure portal
service_namespace = '###########'
sbs  = ServiceBusService(service_namespace,shared_access_key_name=key_name,shared_access_key_value=key_value)      


msg = sbs.receive_queue_message('taskqueue')
sbs.delete_queue_message('taskqueue',5,'ef4e2189-bfef-42ac-ba09-7fd20287f6a9')

【问题讨论】:

您从哪里获得此锁定令牌 (ef4e2189-bfef-42ac-ba09-7fd20287f6a9) 值? 使用 msg.broker_properties['LockToken']) 【参考方案1】:

尝试增加 lock_duration。

完成后,这里是 servicebus https://pypi.org/project/azure-servicebus/7.0.0/v7 中的代码

https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/servicebus/azure-servicebus/samples/sync_samples/receive_queue.py

【讨论】:

【参考方案2】:

终于能够通过从门户网站将锁定持续时间从默认值增加到 300 秒来解决上述问题。

增加锁定持续时间后,我能够成功运行我的项目,而不会出现任何与锁定相关的错误。

【讨论】:

【参考方案3】:

如果消息的处理时间超过为队列指定的MaxLockDuration,则锁定可能会过期。检查taskqueue 队列的值是什么,以及从收到消息到调用delete_queue_message() 的消息处理持续时间。

另外一个考虑因素是预取,但我不确定它是否已为 Python 客户端启用。值得验证它是否设置为零或不会导致消息在等待处理时丢失锁定。

【讨论】:

谢谢@Sean Feldman 的回答我已经检查过了,发现 Locktoken 每 60 秒过期一次。所以有什么办法可以增加这些时间或为 LockToken 设置更多时间。跨度> 是的,有。您可以将MaxLockDuration 设置为最多 5 分钟。您将需要使用门户或工具来执行此操作。 ServiceBus Explorer、Queue Explorer 或 Cerebrate Cerulean。

当我尝试保存测试计划时,为啥会收到 NoClassDefFound 错误?

】当我尝试保存测试计划时,为啥会收到NoClassDefFound错误?【英文标题】:WhydoIgetaNoClassDefFounderrorwhenItrytosavemytestplan?当我尝试保存测试计划时,为什么会收到NoClassDefFound错误?【发布时间】:2019-12-0300:45:54【问题描述】:我安... 查看详情

当我尝试访问我的 CodeIgniter 应用程序时,为啥会收到 404 错误?

】当我尝试访问我的CodeIgniter应用程序时,为啥会收到404错误?【英文标题】:WhyamIgettinga404errorwhenIattemptoaccessmyCodeIgniterapp?当我尝试访问我的CodeIgniter应用程序时,为什么会收到404错误?【发布时间】:2012-05-2218:04:39【问题描述... 查看详情

为啥我尝试打开 URL 时收到 403 错误

】为啥我尝试打开URL时收到403错误【英文标题】:WhydoIgeta403errorwhenItryopenaURL为什么我尝试打开URL时收到403错误【发布时间】:2013-05-2510:46:07【问题描述】:我目前正在使用来自http://imdbapi.org的imdbapi来获取有关电影的一些信息。... 查看详情

为啥我在尝试使用 fetch 连接 Api 时收到“错误请求”错误 400?

】为啥我在尝试使用fetch连接Api时收到“错误请求”错误400?【英文标题】:WhyIgeta"BadRequest"Error400whenItrytoconnectwithApiwithfetch?为什么我在尝试使用fetch连接Api时收到“错误请求”错误400?【发布时间】:2021-03-2703:57:15【问... 查看详情

当我尝试在我的代码中使用 re.sub 表达式时,为啥会收到一个名为“预期字符串或类似对象的字节”的错误 [重复]

】当我尝试在我的代码中使用re.sub表达式时,为啥会收到一个名为“预期字符串或类似对象的字节”的错误[重复]【英文标题】:WhyamIgettinganerrorcalled\'expectedstringorbyteslikeobject\'whenItrytousethere.subexpressioninmycode[duplicate]当我尝试在我... 查看详情

当我尝试使用 EF 在 ASP.NET MVC5 中查询视图时,为啥会收到错误“数据库 'ELITEPROD' 中的 CREATE TABLE 权限被拒绝”?

】当我尝试使用EF在ASP.NETMVC5中查询视图时,为啥会收到错误“数据库\\\'ELITEPROD\\\'中的CREATETABLE权限被拒绝”?【英文标题】:WhyamIgettingtheerror"CREATETABLEpermissiondeniedindatabase\'ELITEPROD\'"whenI\'mtryingtoqueryaviewinASP.NETMVC5usingEF?当... 查看详情

当我似乎正在填写参数时,为啥会收到 TypeError? [关闭]

】当我似乎正在填写参数时,为啥会收到TypeError?[关闭]【英文标题】:WhyamIgettingaTypeErrorwhenIseemtobefillingtheparemeters?[closed]当我似乎正在填写参数时,为什么会收到TypeError?[关闭]【发布时间】:2021-11-0901:44:29【问题描述】:我正... 查看详情

当我尝试从双向链表中删除最后一个元素时,为啥会收到“信号 SIGSEGV,分段错误”?

】当我尝试从双向链表中删除最后一个元素时,为啥会收到“信号SIGSEGV,分段错误”?【英文标题】:WhydoIreceivea"signalSIGSEGV,segmentationfault"whenItrytodeletelastelementsfromdoublylinkedlist?当我尝试从双向链表中删除最后一个元素时... 查看详情

javax.mail.SendFailedException 为啥当我尝试通过我的 java 代码发送电子邮件时收到上述异常?

】javax.mail.SendFailedException为啥当我尝试通过我的java代码发送电子邮件时收到上述异常?【英文标题】:javax.mail.SendFailedExceptionWhyIreceivetheabovementionedexpcetionwhenitrytosendemailthroughmyjavacode?javax.mail.SendFailedException为什么当我尝试通过我... 查看详情

为啥我在尝试创建此表时不断收到外键错误? [复制]

】为啥我在尝试创建此表时不断收到外键错误?[复制]【英文标题】:WhydoIkeepgettingforeignkeyerrorswhentryingtocreatethistable?[duplicate]为什么我在尝试创建此表时不断收到外键错误?[复制]【发布时间】:2019-07-1015:00:12【问题描述】:我... 查看详情

为啥我在尝试使用 HttpListener 时会收到“AccessDenied”? [复制]

】为啥我在尝试使用HttpListener时会收到“AccessDenied”?[复制]【英文标题】:WhydoIget"AccessDenied"whentryingtouseHttpListener?[duplicate]为什么我在尝试使用HttpListener时会收到“AccessDenied”?[复制]【发布时间】:2010-12-3113:25:28【问... 查看详情

为啥我在运行查询时收到错误 -4700(尝试使用新功能模式)?

】为啥我在运行查询时收到错误-4700(尝试使用新功能模式)?【英文标题】:WhyamIgettingerror-4700(attempttousenewfunctionmode)whenrunningaquery?为什么我在运行查询时收到错误-4700(尝试使用新功能模式)?【发布时间】:2016-08-1908:57:06【... 查看详情

为啥当我使用 nativescript 从 iOS 发送表情符号字符时会收到陌生字符串

】为啥当我使用nativescript从iOS发送表情符号字符时会收到陌生字符串【英文标题】:WhyigetstrangerstringwhenisendemojicharacterfromiOSwithnativescript为什么当我使用nativescript从iOS发送表情符号字符时会收到陌生字符串【发布时间】:2019-07-051... 查看详情

为啥我会收到这个 TypeError?

】为啥我会收到这个TypeError?【英文标题】:WhyI`mgettingthisTypeError?为什么我会收到这个TypeError?【发布时间】:2022-01-2322:23:40【问题描述】:我正在尝试创建一个getprefix命令,它会更改服务器前缀。我正在使用sql数据库来存储前... 查看详情

为啥在使用 AJAX/PHP 时收到未定义索引错误?

】为啥在使用AJAX/PHP时收到未定义索引错误?【英文标题】:WhyamIreceivinganUndefinedIndexerrorwhenusingAJAX/PHP?为什么在使用AJAX/PHP时收到未定义索引错误?【发布时间】:2016-11-0718:55:24【问题描述】:我目前正在开发一个遥控应用程序... 查看详情

为啥我在尝试使用 reddit API 时会收到 405 错误?

】为啥我在尝试使用redditAPI时会收到405错误?【英文标题】:WhydoIget405errorwhentryingtouseredditAPI?为什么我在尝试使用redditAPI时会收到405错误?【发布时间】:2021-12-1519:31:22【问题描述】:我目前正在制作一个从redditAPI获取数据并将... 查看详情

为啥我在使用 pip install 命令时会收到此错误 [重复]

】为啥我在使用pipinstall命令时会收到此错误[重复]【英文标题】:Whydoigetthiserrorwheniusethepipinstallcommand[duplicate]为什么我在使用pipinstall命令时会收到此错误[重复]【发布时间】:2020-05-0123:58:55【问题描述】:当我尝试使用pip(python)... 查看详情

当我的应用程序进行电池优化时,为啥我无法收到推送通知?

】当我的应用程序进行电池优化时,为啥我无法收到推送通知?【英文标题】:WhyamInotabletoreciveapushnotificationwhenmyappisbatteryoptimized?当我的应用程序进行电池优化时,为什么我无法收到推送通知?【发布时间】:2019-05-1517:33:04【问... 查看详情