Rabbitmq:何时使用rabbitmq基于主题的交换?

时间:2017-08-04 18:10:01

标签: rabbitmq rabbitmq-exchange

我们有rabbitmq消费者,我们从哪里获取图片网址:

  1. 通过此网址下载图片。
  2. 将图像调整为我们的标准宽高比
  3. 在我们的服务器上以客户端指定的路径上传。
  4. 此消费者的输入是:

    {
      "imageUrl": "xyz.jpg", //url of the existing image
      "path": "/stock/123", //server path where we need to store this image,
      "team": "teamA" //team that sends this image.
    }
    

    消费者首先下载图像,然后在给定路径上将其上传到服务器。发布这个,我们需要将这个图像存储在我们的数据库中以表明它已准备好使用,即在这种情况下,我们将通过“teamA-stored-procedure”将它保存在mysql中。

    我们有团队从“teamA”到“teamZ”,每个团队都有不同的数据库表,他们会转储图像信息,即其主机网址,路径等。

    我们在消费者中放了很多if-elseif支票,即如果“module”是“teamA”,我们将点击“teamA-StoredProcedure”......类似于teamB-teamZ。

    要删除这些检查,我们可以:

    1. 我们可以为每个团队公开API,而不是在消费者中调用各个团队的存储过程,API URL可以作为输入传递给消费者。一旦完成图像下载/调整大小/上传,它就会触及相应团队的API。
    2. 创建基于主题的交换并为每个团队托管单独的消费者。每个消费者只会听取各自团队的消息。这看起来像是“基于主题的交换”的完美用例,但是存在托管多个消费者而不是一个消费者的开销。
    3. 使用“基于主题的交换”或使用“直接交换”与单个消费者并将休息委托给各自的API是完美的用例吗?

0 个答案:

没有答案