我们在项目设置中使用Flask和nameko和RabbitMQ。几个月前,我们已经开始开发多个服务名称。在
我们有两个项目-A和B,两个项目都有UserService(具有不同的功能):
class UserService:
name = 'user_service'
...
问题是当我们需要在同一台机器上运行两个项目时,一个用户服务无法工作。准确地说,两者都在工作,但是所有的请求都由其中一个处理,由于它们的结构不同,我们得到了错误。在
第一个想法是在服务名中添加project前缀,类似于A_user_service
,但这确实是一个很难看的解决方案(在rpc
部分,我们需要调用类似rpc.A_user_service
的内容,这很糟糕)。nameko项目有没有名称空间?我们试图将config中的rpc_excange
参数设置为每个项目都不同,但这并不能解决我们遇到的问题。在
我想这在某种程度上取决于你如何定义“项目”。服务名称是主名称空间,因此如果这两个用户服务有可能共存,它们可能应该使用不同的(也许更具体)服务名称。在
如果它们是完全独立的(例如,为两个独立的客户机开发的),那么使用单独的rabbitmq
vhost
可以解决您的问题吗?这样一来,您将运行两个独立的服务“集群”,vhost a中的任何内容都无法看到或与vhost b中的任何内容进行通信(当然,如果需要,您可以在两个客户端站点/网络上运行服务x的实例)相关问题 更多 >
编程相关推荐