Rabbitmq 微服务内部队列

Rabbitmq 微服务内部队列,rabbitmq,queue,microservices,Rabbitmq,Queue,Microservices,让我们想象一下,我们希望以这样的方式清洁羊群中的羊,即每只羊一次可以清洁一次-该羊的其他清洁任务应该排队。 我们还有一群牧羊人,他们可以一次清理多只羊。 绵羊的数量很大,而且变化无常(它们死了又生了……)。 清洁绵羊的要求是随机的,而且是经常提出的 在这种方法中,shepherd是一个微服务实例 应使用什么体系结构来: 确保绵羊在同一时间只清洗一次 一个牧羊人一次可以清理多只羊 同一只羊不是由多个牧羊人同时清洗的 如果有多个清洁任务发送给同一只羊,羊会一次又一次地自动清洁 迄今为止的解决办法

让我们想象一下,我们希望以这样的方式清洁羊群中的羊,即每只羊一次可以清洁一次-该羊的其他清洁任务应该排队。 我们还有一群牧羊人,他们可以一次清理多只羊。 绵羊的数量很大,而且变化无常(它们死了又生了……)。 清洁绵羊的要求是随机的,而且是经常提出的

在这种方法中,shepherd是一个微服务实例

应使用什么体系结构来:

  • 确保绵羊在同一时间只清洗一次
  • 一个牧羊人一次可以清理多只羊
  • 同一只羊不是由多个牧羊人同时清洗的
  • 如果有多个清洁任务发送给同一只羊,羊会一次又一次地自动清洁
迄今为止的解决办法:

  • 在每个牧羊人的记忆队列中-不起作用-多个牧羊人可以清洗同一只羊
  • 像RabbitMQ这样的外部队列——会迫使我为每只羊创建单独的队列——因为羊的数量可变,所以不可能保持稳定

  • 还有其他想法吗?

    我们在这里讨论的是真正的动物清洁软件,还是您所问的羊是对其他东西的抽象?如果是这样的话,那么你应该提出你的问题,而不使用类比——这会引起混乱……)牧羊人有一个储物柜,我们称之为绵羊清洁储物柜。储物柜里有一串勺子,每个勺子上都写着不同的羊名。如果shepherd-1在他的队列中得到一个sheep-445清洁任务,那么他打开储物柜,得到上面写着sheep-445的勺子。当他清洗完Sleep-445后,他把勺子放回储物柜。如果shepherd-2在shepherd-1清洗完sheep-445之前收到sheep-445清洗任务,他打开储物柜,却找不到sheep-445汤匙。因此,他放弃了这个任务,转而执行下一个任务。这个软件是基于一些规则创建容器的,这些规则很难表达,因此类比。外部锁定服务意味着我们仍然需要在某处排队。从队列中获取一个任务,然后不确认它(再次放在末尾)是队列反模式吗?我们在这里讨论的是实际的动物清洁软件,还是您问题中的羊是其他东西的抽象?如果是这样的话,那么你应该提出你的问题,而不使用类比——这会引起混乱……)牧羊人有一个储物柜,我们称之为绵羊清洁储物柜。储物柜里有一串勺子,每个勺子上都写着不同的羊名。如果shepherd-1在他的队列中得到一个sheep-445清洁任务,那么他打开储物柜,得到上面写着sheep-445的勺子。当他清洗完Sleep-445后,他把勺子放回储物柜。如果shepherd-2在shepherd-1清洗完sheep-445之前收到sheep-445清洗任务,他打开储物柜,却找不到sheep-445汤匙。因此,他放弃了这个任务,转而执行下一个任务。这个软件是基于一些规则创建容器的,这些规则很难表达,因此类比。外部锁定服务意味着我们仍然需要在某处排队。从队列中获取一个任务,并且不将其确认(再次将其放在末尾)是队列反模式