Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于返回结果的作业的RabbitMQ体系结构_Rabbitmq - Fatal编程技术网

用于返回结果的作业的RabbitMQ体系结构

用于返回结果的作业的RabbitMQ体系结构,rabbitmq,Rabbitmq,我试图创建一个系统,人们可以提交文件进行签名。每次提交可以有多个文件,如果每次提交中的所有文件都完成,结果将发送回用户 目前我有6个签名框,一次签名一个文件。因此,对于每次提交,我需要分离所有文件,并在6个签名框中进行负载平衡,然后我需要获取结果并跟踪此提交中的所有文件是否已完成 如果可能的话,我还想限制每个提交可以使用的签名框的最大数量,这样一个大的提交就不会使其他作业感到饥饿 我目前的设置是,我有一个提交队列,几个提交队列使用者将逐个使用其中的消息,将提交分解为单个文件,并将它们发送到文件队

我试图创建一个系统,人们可以提交文件进行签名。每次提交可以有多个文件,如果每次提交中的所有文件都完成,结果将发送回用户

目前我有6个签名框,一次签名一个文件。因此,对于每次提交,我需要分离所有文件,并在6个签名框中进行负载平衡,然后我需要获取结果并跟踪此提交中的所有文件是否已完成

如果可能的话,我还想限制每个提交可以使用的签名框的最大数量,这样一个大的提交就不会使其他作业感到饥饿

我目前的设置是,我有一个提交队列,几个提交队列使用者将逐个使用其中的消息,将提交分解为单个文件,并将它们发送到文件队列。6个签名框将是文件队列的6个使用者。我无法将结果写回提交消费者,因为提交消费者跟踪是否完成了此提交的所有文件,我也无法控制每个作业使用的签名框的最大数量

我查看了rabbitmq的RPC设置,它允许写回结果。问题是每个文件的rpc调用都被阻塞,我希望同一提交的多个文件能够并行登录。因此,我需要一些关于这种情况下rabbitmq体系结构和消息流的建议。

1)假设您知道文件的类型,为每个提交分配一个作业id

2) 一个作业可以由多个任务组成

3) 计算一个优先级,它可以是文档数量的倒数。因此,默认情况下,文档数量较多的文档优先级较低。您的应用程序应该具有调整优先级的功能,以防需要以高优先级处理更大的作业

4) 与其耦合作业提交者和签名者,不如使用基于事件的机制,在签名成功和失败时或当前处理每个任务时发出事件

提交者将保留作业和任务的详细信息,签名者将在处理过程中对其进行更新。在提交任何进一步的任务之前,提交者将考虑当前执行的任务的优先级和数量。打那个电话的逻辑就留给你了