0

我们在项目设置中使用 Flask 和 nameko 和 RabbitMQ。我们将它用于多个项目(我们已经在 2 个月前开始),并且我们在开发时遇到了服务名称的问题。

我们有两个项目 - A 和 B,它们都有 UserService(具有不同的功能):

class UserService:
    name = 'user_service'
    ...

问题是当我们需要在同一台机器上运行两个项目时,一个用户服务不起作用。准确地说,两者都在工作,但所有请求都由其中一个处理,并且由于它们的结构不同,我们得到了错误。

第一个想法是在服务名称中添加项目前缀,例如A_user_service,但这确实是丑陋的解决方案(rpc部分我们需要调用类似的东西rpc.A_user_service,这很糟糕)。nameko 项目是否有任何类型的命名空间?我们尝试将rpc_excange配置中的参数设置为每个项目不同,但这并不能解决我们遇到的问题。

4

1 回答 1

1

我想这有点取决于你如何定义“项目”。服务名称是主要的命名空间,因此如果这两个用户服务有可能共存,它们可能应该使用不同的(也许更具体的)服务名称。

如果它们是完全独立的(例如为两个独立的客户端开发),那么也许使用单独的 rabbitmqvhost可以解决您的问题?这样,您最终会运行两个单独的“集群”服务,其中 vhost a 中的任何内容都无法看到或与 vhost b 中的任何内容对话(当然,如果您愿意,您可以在两者中运行 service x 的实例,例如,对于将在两个客户端站点/网络上运行)

于 2016-12-29T14:34:39.970 回答