- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
JMS 队列场景所需的建议
您好,我是 Java EE 和应用程序服务器的新手,我想知道 JMS 队列(或 ActiveMQ?)解决方案是否适合我的场景。现在我不这么认为,但似乎有很多我可能不知道的选项。
我有一个可以访问项目(数据库中的数据)的客户端应用程序,并将锁定该项目直到客户端完成。如果客户不关闭应用程序,他可能会锁定项目很多天。
我需要开发一个 web 服务,它将发布到队列操作,以在项目上完成。 困难的部分是如果这个项目当前被锁定,这些操作需要暂停。(而且我不知道什么时候锁定被释放;所以我可能需要一个计时器将尝试使这些操作出队)。
所以如果项目A当前被锁定,我的队列可能看起来像这样:
如果 A 被锁定,我需要能够继续处理 B(或任何其他未锁定的项目)上的操作,并在其锁定被释放后处理项目 A。
我考虑过为每个具有待处理操作的项目创建内存 JMS 队列以保留其顺序)但我不能(也不应该),因为队列将由 App Server 定义。而且我显然需要持久队列(所以没有临时队列?)
JMS 队列是否适合这种情况?ActiveMQ 或其他实现有帮助吗?
我是否必须在计时器上使用自己的队列/SQL 表/EJB 进行编码?
最佳答案
JMS 和其他方法都有很多选择。
但这里是我对使用 JMS(ActiveMQ 或诸如此类)的一种可能解决方案的想法:
您可以有一个 JMS 队列用于接收消息,一个队列用于等待消息(等待在某个锁定的项目上处理)。希望您也有一些 ID(我称之为“projectId”,以标识锁定的项目)。我还假设您可以在项目发布时执行代码。
这里是一些伪代码,你可以如何思考,同时使用队列实现这个场景。
public void onMessage(Message msg){
ProjData pd = extractProjectData(msg);
if( projectLocked(pd) ) {
msg.setStringProperty("projectId",pd.getProjectId());
sendToOnHoldQueue(pd);
}else{
processProjectData(pd);
}
}
// Say there is an event somewhere when the lock is released
public void onProjectLockReleased(projectId){
// select messages waiting for this project via Jms selectors..
// you may or may not want to lock the project here, while working of the "on hold events"
MessageConsumer consumer = session.createConsumer(onHoldQueue,"projectId='"+projectId+"'");
while(Messages msg = consumer.receiveNoWait()){
processProjectData(pd);
}
}
关于java - JMS 队列场景所需的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12922745/
我有一个依赖于包 B 的包 A。当包 A 中的代码运行并访问包 B 中的类时,包 B 的状态将被解析 (4),而不是 Activity (32) 和包 B 的激活器也没跑好。我认为 bundle B
这个问题在这里已经有了答案: How to remove the space between inline/inline-block elements? (41 个回答) 关闭 7 年前。
我正在尝试使用 Java OpenAL 库。我在导入名为 libsoft_oal.so 的 native 库时遇到问题。 Java OpenAL 依赖于 OpenAL 软实现。我尝试根据他们在 git
我正在尝试启动我的应用程序。是一个 unicorn +工头+sinatra的应用。 这是我的 config.ru 文件: require "rubygems" require "sinatra" Bu
我有一个下拉列表,其中包含一些从数据库表中检索的值,我想要的是当单击按钮时它应该只获得选项标签的中间值,但只有那些类名为“get_this”的选项标签并离开那些选项,如果他们没有这个类 预期输出:值
我有一个index.php文件,需要一个通用的head.php文件,head.php文件中有几个Javascript文件,当这样尝试时,代码在源代码中看起来很好,但文件却不是实际上对文档做任何事情。
有人能帮帮我吗? 我已经像这样运行了 imsmod: $ insmod /data/mm/mmdev.ko epoll_rate=100 但是我得到一个错误: insmod: init_module
是否有键盘快捷键或插件可以在 Notepad++ 中打开 PHP 所需或包含的文件?我知道,在 Dreamweaver 中,执行此操作的命令是 Ctrl+D,但我似乎无法在 Notepad++ 中找到
我已经用 js 设置了一个显示/隐藏 div,但我很难弄清楚如何一次显示一个 div。目前发生的情况是,除非我再次单击原始链接来关闭该 div,否则每个 div 都会显示。 http://www.li
当我尝试将未分配的辅助分片分配给节点时出现错误。 { "error": { "root_cause": [ { "type": "remote_transpor
我正在构建一个 C++ 应用程序,使用 Netbeans 6.9 作为我的 IDE。我有一个 C++ 库,它是一个纯 C 库的包装器。 我已将文件正确添加到项目中(使用添加库文件选项)。这是 g++
我是一名优秀的程序员,十分优秀!