Я пытаюсь написать микросервис, используя платформу Go Micro, которая собирается использовать от брокера RabbitMQ и писать другому.
Go Micro имеет плагин RabbitMQ, однако кажется, что если кто-то хочет использоватьабстракции Go Micro (такие как micro.RegisterSubscriber
), нужно полагаться на множество глобальных состояний, внутренних по отношению к библиотеке.В итоге я настроил потребителя с помощью micro.RegisterSubscriber
, а затем вручную создал отдельного посредника, стараясь не использовать какое-либо внутреннее глобальное состояние (например, обмен по умолчанию), а затем вызвал broker.Publish
в функции потребителя, что означало, что мне пришлось маршалироватьсообщение перед отправкой.
Разве это не поддерживаемый шаблон в Go Micro?Есть ли лучший способ сделать что-то подобное?
Я должен упомянуть, что основная причина выбора Go Micro в этом конкретном случае заключается в том, что он, кажется, имеет надежную абстракцию RabbitMQ с поддержкой повторного подключения, которая, кажется,в Go будет трудно найти, не обязательно, потому что в этом случае мне нужна была поддержка RPC.