Потребляйте от одного брокера и производите к другому, используя Go Micro - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь написать микросервис, используя платформу Go Micro, которая собирается использовать от брокера RabbitMQ и писать другому.

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

Разве это не поддерживаемый шаблон в Go Micro?Есть ли лучший способ сделать что-то подобное?

Я должен упомянуть, что основная причина выбора Go Micro в этом конкретном случае заключается в том, что он, кажется, имеет надежную абстракцию RabbitMQ с поддержкой повторного подключения, которая, кажется,в Go будет трудно найти, не обязательно, потому что в этом случае мне нужна была поддержка RPC.

1 Ответ

0 голосов
/ 12 февраля 2019

Go Micro был разработан, чтобы быть отдельным процессом на сервис и инициализировать одну абстракцию.Это дизайн для 99% использования того, как мы пишем программное обеспечение.Есть некоторые, кто хотел бы мульти-транспорт, мульти-брокер и т. Д., Но это выходит за рамки проекта, и я думаю, что кто-то может легко спроектировать, например, брокер, который загружает несколько брокеров, а затем переключается на основе опции илипрефикс.

Отдельно я разработал сервис, который загружает нескольких брокеров для объединения сообщений.Это может вас заинтересовать https://github.com/microhq/federation-srv

...