使用 Go Micro 从一个经纪人消费并生产到另一个经纪人
Consume from one broker and produce to another using Go Micro
我正在尝试使用 Go Micro 框架编写微服务,该框架将从 RabbitMQ 代理消费并写入另一个。
Go Micro 有一个 RabbitMQ 插件,但似乎如果想使用 Go Micro 抽象(例如 micro.RegisterSubscriber
),则必须依赖库内部的许多全局状态。我最终使用 micro.RegisterSubscriber
设置了一个消费者,然后手动创建一个单独的代理,注意不要使用任何内部全局状态(例如默认交换),然后在消费者函数中调用 broker.Publish
,这意味着我必须在发送之前手动封送邮件。
Go Micro 不支持这种模式吗?有没有更好的方法来做这样的事情?
我应该提到,在这种特殊情况下选择 Go Micro 的主要原因是因为它似乎具有可靠的 RabbitMQ 抽象和重新连接支持,这在 Go 中似乎很难获得,不一定是因为我需要 RPC在这种情况下支持。
Go Micro 被设计为每个服务只有一个进程,并初始化每个抽象之一。这是我们编写软件的 99% 用例的设计。有一些人想要多传输、多代理等,但这超出了项目的范围,我认为其他人可以轻松设计的东西,例如加载多个代理然后根据选项切换的代理或前缀.
另外,我开发了一个加载多个代理来进行消息联合的服务。您可能对此感兴趣 https://github.com/microhq/federation-srv
我正在尝试使用 Go Micro 框架编写微服务,该框架将从 RabbitMQ 代理消费并写入另一个。
Go Micro 有一个 RabbitMQ 插件,但似乎如果想使用 Go Micro 抽象(例如 micro.RegisterSubscriber
),则必须依赖库内部的许多全局状态。我最终使用 micro.RegisterSubscriber
设置了一个消费者,然后手动创建一个单独的代理,注意不要使用任何内部全局状态(例如默认交换),然后在消费者函数中调用 broker.Publish
,这意味着我必须在发送之前手动封送邮件。
Go Micro 不支持这种模式吗?有没有更好的方法来做这样的事情?
我应该提到,在这种特殊情况下选择 Go Micro 的主要原因是因为它似乎具有可靠的 RabbitMQ 抽象和重新连接支持,这在 Go 中似乎很难获得,不一定是因为我需要 RPC在这种情况下支持。
Go Micro 被设计为每个服务只有一个进程,并初始化每个抽象之一。这是我们编写软件的 99% 用例的设计。有一些人想要多传输、多代理等,但这超出了项目的范围,我认为其他人可以轻松设计的东西,例如加载多个代理然后根据选项切换的代理或前缀.
另外,我开发了一个加载多个代理来进行消息联合的服务。您可能对此感兴趣 https://github.com/microhq/federation-srv