【问题标题】:How do message publishers advise clients about queue URLs?消息发布者如何就队列 URL 向客户提供建议?
【发布时间】:2017-06-14 05:07:05
【问题描述】:

在 Amazon SQS 中,消息发布者创建队列并将消息发布到队列上。但是,要使用队列中的消息,客户端需要知道队列 URL,(显然)只有发布者知道。

我是否遗漏了有关队列架构如何工作的内容?

【问题讨论】:

    标签: java message-queue amazon-sqs


    【解决方案1】:

    我是否遗漏了有关队列架构如何工作的内容?

    我怀疑是这样。

    队列有生产者和消费者……但这些实体都不一定创建队列。当然,它们都必须——通过某种机制——学习 URL,但如何发生完全取决于应用程序。

    队列(因此​​它的 URL)通常是永久性的(不是临时的),并且是在配置过程(自动或手动)中创建的,而不是由生产者创建的。

    虽然生产者可以创建队列,但消费者也可以创建队列,然后(直接或间接)建议最终成为生产者的进程将要发送的任何消息发送到何处。

    工作进程成为一个队列的消费者和另一个队列的生产者的情况也很常见......或者工作人员与多个队列进行交互。

    "W" = workers, "P" = producer, "C" = consumer, "Q" = queue, "T" = task
    
    W1 (now a producer) >> Q1 >> "Please perform task T1 and send results to Q2"
    W2 (now a consumer) << Q1 << "Please perform task T1 and send results to Q2"
    W2 (performs task T1)
    W2 (now a producer) >> Q2 >> "Here are the results from task T1"
    W1 (now a consumer) << Q2 << "Here are the results from task T1"
    

    在本例中,W1 是 Q1 的生产者和 Q2 的消费者;它需要知道 Q1(发送请求的位置)和 Q2(请求发送响应的位置)的 URL。 Q1 的生产者可能不负责创建 Q1。 Q1 已经存在。它可能负责创建 Q2,它将成为消费者。

    相反,W2 只需要知道 Q1 的 URL,Q1 是它被分配为消费者的队列。如上所述,Q1 很可能“已经存在”,并且 URL 将提供给 W1 和 W2——也许是在它们最初启动时。传入的请求可以将 Q2 的 URL 告知 W2,或者 W2 可能总是将其结果返回给 Q2,在这种情况下,W1 不需要在原始消息中指定。

    谁创建队列以及队列的生产者和/或消费者如何学习队列 URL 的问题是架构过程的一部分 - 绝对没有一般原则表明生产者会成为队列最有可能的创建者。谁来做什么很大程度上取决于使用队列的原因和工作流程的性质。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      相关资源
      最近更新 更多