java - 消息队列中作业的唯一 ID?

标签 java message-queue rabbitmq

我正在编写一个需要在后台执行长时间计算的应用程序,因此我基本上有以下工作流程:

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

计算服务器还提供有关工作状态的实时反馈,以便客户端可以查看进度。

我现在遇到的主要问题是弄清楚如何为队列中提交的消息获取唯一的作业 ID,以及在事后弄清楚哪个服务器为该消息提供服务。一旦最初提交了作业(第 1 步),客户端应该会收到一个唯一的 token 来标识该作业。然后,客户端应该能够定期轮询调度程序服务器以检查 token 的状态,了解它是否已启动。

计算服务器为请求提供服务后,客户端应在轮询调用中获取编码器服务器的 DNS 地址或 IP 地址。

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

最佳答案

事实证明,RabbitMQ does in fact give unique ids for messages ,在 RPC 应用程序中特别有用,这是我正在创建的应用程序类型。每条消息都有一个 correlationId 来唯一标识它,并且可以提供一个回调,通过它在作业完成时或实际上在任何时候通知原始服务器。

关于java - 消息队列中作业的唯一 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459759/

相关文章:

java - Ant,Tomcat 构建错误 : java. lang.NoClassDefFoundError: org/apache/tomcat/util/buf/B2CConverter

java - 消息队列或调度程序

qt - 何时使用deleteLater

Erlang AMQP 客户端库

go - 关于 channel in go 的一些问题

java - 通用单例工厂

java8 流和状态

java - 使用当前年份的 JPA/Hibernate 主键值序列

centos - 无法启动 RabbitMQ STOMP 插件?

python - 无法启动 Airflow worker/flower,需要澄清 Airflow 架构以确认安装正确