使用Go Micro从一个经纪人消费并生产到另一个经纪人

时间:2019-02-11 20:26:07

标签: go rabbitmq microservices messagebroker go-micro

我正在尝试使用Go Micro框架编写微服务,该框架将从RabbitMQ代理中使用并写入另一个。

Go Micro有一个RabbitMQ插件,但是似乎如果要使用Go Micro抽象(例如micro.RegisterSubscriber),则必须依赖于库内部的许多全局状态。我最终使用micro.RegisterSubscriber设置了一个使用者,然后小心地手动创建了一个单独的代理,以不使用任何内部全局状态(例如默认交换),然后在使用者函数中调用broker.Publish,这意味着必须先手动封送邮件,然后再发送。

这是Go Micro中不受支持的模式吗?有没有更好的方法来做这样的事情?

我应该提到在这种特殊情况下选择Go Micro的主要原因是因为它似乎具有可靠的RabbitMQ抽象,并且具有重新连接支持,这在Go中似乎很难实现,不一定是因为我需要在其中提供RPC支持这种情况。

1 个答案:

答案 0 :(得分:1)

Go Micro设计为每个服务一个进程,并初始化每个抽象之一。这是我们编写软件的99%用例的设计。有些人想要多运输,多经纪人等,但这超出了项目的范围,我认为其他人可以轻松设计一些东西,例如,一个经纪人,该经纪人可以加载多个经纪人,然后根据期权进行切换或前缀。

我分别开发了一项服务,该服务加载多个代理以进行消息联合。您可能对此感兴趣https://github.com/microhq/federation-srv

相关问题