【发布时间】:2016-01-20 13:59:05
【问题描述】:
简化:
我在activemq中有一个队列。当从队列中读取某条消息时,我想锁定队列,直到该进程结束处理接收到的消息。
详细解释:
我有一个拥有大量用户的系统。每次用户更改系统中的状态(配置文件、角色、访问权限、资产所有权等)时,我还需要使用这些更改更新第三方服务器。
该第三方与我们分开,他们向我公开的 api 允许我一次只更新一个用户,大约需要一秒钟。
我正在使用 ActiveMQ 将主更新过程与更新第三方系统分离。
每天晚上我都会收到一个可能包含数千个用户更改的提要文件。由于这是一项关键任务,并且更新第三方对时间不那么敏感,并且由于更新第三方可能需要从同一个表中读取,所以主进程是批量更新,我需要锁定队列。 意思是,我希望 ActiveMQ 为我在主进程中更改的每个用户获取消息,但我也希望 ActiveMQ 保留这些消息,直到主进程完成。
ActiveMQ 中的任何内置机制可以做到这一点?
【问题讨论】:
-
如果我理解正确,您的系统是 [update process] -AMQ-> [adapter] -> [3rd party API],并且您不希望适配器运行,直到您更新过程已将所有消息输入?
标签: asynchronous activemq message subscriber