2012-07-12 63 views
2

我有我写这需要在后台执行长计算的应用程序,所以我有实质上包含以下流程:消息队列中的作业的唯一ID?

  1. 客户端提交作业的边缘“调度员”服务器。
  2. 调度程序服务器将作业提交给消息队列。
  3. 计算服务器拉取作业并开始工作。

计算服务器还提供工作状态的实时反馈,以便客户可以观察进度。

我有现在的主要问题是搞清楚如何获得一个唯一的作业的标识提交的消息队列,也该服务器提供服务的消息后的事实搞清楚。一旦作业最初提交(步骤1),客户端应该收到一个唯一标识该作业的令牌。客户端应该能够定期轮询调度服务器,检查令牌的状态是否已经启动。

经过计算服务器提供服务的请求,客户端应该然后得到在民意调查通话编码器服务器的DNS地址或IP地址。

我怎样才能做到这一点?消息队列是否为队列中的每条消息提供了唯一标识令牌的概念?

回答

8

事实证明,RabbitMQ的does in fact give unique ids for messages,在RPC应用程序,这是我期待在创造一种应用特别有用。每条信息都有一个correlationId唯一标识,并可以提供callback可通知原来的服务器在工作时在任何点已完成或真正的。

1

可以使用java.util.UUID类生成全局唯一标识符。

示例代码:

UUID uuid = UUID.randomUUID(); 
System.out.println("UUID: " + uuid.toString()); 

输出样本:UUID: d5a43450-2321-40ac-9746-9cf5d7447aca

对于消息队列的一部分,以避免重新发明轮子,我建议您先检查基于JMS的解决方案。有a lot of alternatives