问候,
在我正在进行的应用程序中,我有一个长期运行的过程(DNA分析)。用户可以发送请求,我正在考虑在JMS队列中排队请求,然后相应地处理队列中的请求。然后,结果通过电子邮件发送给特定用户。
但是,管理员应该能够更改请求的顺序/优先级。我想知道是否可以更改JMS队列的顺序。我可以使用什么技术?我可以用ActiveMQ吗?
PS:这个'DNA分析'过程是一个通过JNI访问的资源匮乏的过程。一次只能运行一个(或有限的)进程。
答案 0 :(得分:3)
以下是一些想法:
AFAIK,JMS消息的主体是不可变的,因此如果要修改正文的内容,则必须使用JMS消息的修改版本并将其重新发送到队列中。
另一个选择是在JMS客户端级别实现某种过滤,以便管理员控制下一个要使用的消息。
您可以使用JMS消息来创建Quartz作业并管理Quartz作业队列(在这种情况下,您是否还需要JMS?)。
答案 1 :(得分:1)
如果您的进程长时间运行(并且您没有任何适合消息传递域的其他要求),则只需轮询数据库表以查找新作业(按优先级排序)。 Spring JDBC抽象应该足以让您入门。如果您使用的是Oracle DBMS,则可以通过订阅,使用触发器和AQ来替换轮询 - 这也可以在纯SQL中完成。
没有其他要求,您不需要ORM或JMS。