【问题标题】:Consume from one broker and produce to another using Go Micro使用 Go Micro 从一个经纪人消费并生产到另一个经纪人
【发布时间】:2019-07-05 10:05:40
【问题描述】:

我正在尝试使用 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】:

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

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

    【讨论】:

    • 感谢您的回答。我有点认为是这种情况,但想要一些确认。您对多代理代理实施的建议实际上非常好,我会考虑这样做
    最近更新 更多