使用Go Micro从一个经纪人处理并生产到另一个经纪人

问题描述 投票:1回答:1

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

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

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

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

go rabbitmq microservices messagebroker go-micro
1个回答
1
投票

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

另外,我开发了一个服务,它加载多个代理来进行消息联合。这可能是你感兴趣的https://github.com/microhq/federation-srv

© www.soinside.com 2019 - 2024. All rights reserved.