Создание службы Pub / Sub БЕЗ сторонних инструментов

Я хотел бы найти решение для создания среды pub / sub для двух микросервисов, чтобы они могли общаться друг с другом, я знаю, что могу использовать некоторые третьи стороны, например Redis, RabbitMQ Реализация связи между микросервисами на основе событий (события интеграции )

Проблема заключается в том, что клиент не может разрешить установку какого-либо стороннего инструмента из соображений безопасности. Сервер messageQueue в Windows также не будет разрешен к использованию. Я могу использовать только те приложения, которые существуют только на сервере.

Поэтому я спрашиваю, могу ли я создать одно простое приложение с помощью службы Windows. Это отношения «один ко многим». У меня есть одна служба, которая будет иметь дело с данными, и если будет какое-либо обновление, она будет публиковать данные в тех службах, которые на нее подписаны.

Кажется, моя проблема может быть похожа на

Реализация службы .NET Scalable Pub / Sub

WCF Pub / Sub с кэшированием подписчиков (ссылка на паб- суб)

но я не вижу критических решений.

Я думал использовать уведомления о данных, которые предлагает MSSQL в качестве последних альтернатив, но похоже, что это может вызвать узкое место при масштабировании приложений. Интернет наводнен статьями, использующими сторонние инструменты.

Спасибо


person csamleong    schedule 30.08.2018    source источник
comment
Где живут эти 2 микросервиса? Оба на одном компьютере? Это два разных приложения?   -  person Hasan Emrah Süngü    schedule 30.08.2018
comment
Если это всего два приложения, вам просто нужна таблица (или две, для простоты), чтобы поставить в очередь опубликованную информацию о событиях, которая удаляется, как только она обрабатывается. Pub / sub действительно становится более сложным, когда у вас есть разные конечные точки, подписывающиеся на разные события.   -  person Reinstate Monica Cellio    schedule 30.08.2018
comment
Вы уверены, что клиент предпочитает безопасность непроверенным и потенциально ненадежным коммуникациям?   -  person Damien_The_Unbeliever    schedule 30.08.2018
comment
Я успешно реализовал связь типа очереди с таблицей в SQL Server (вы, кажется, предполагаете, что это доступно). У меня был только один издатель и один потребитель, поэтому не возникало проблем с обработкой сообщения очереди дважды.   -  person trailmax    schedule 30.08.2018
comment
@ EmrahSüngü да, они живут на одном компьютере, да, это разные приложения. Один отвечает за изменение данных, а остальные сообщают об этом. Другой выполняет действия на основе последних данных.   -  person csamleong    schedule 30.08.2018
comment
@Archer Есть App1 и App2, идея в том, что App2 будет масштабироваться до многих приложений App2 в будущем. Будет ли этот метод работать, если вы можете посоветовать?   -  person csamleong    schedule 30.08.2018
comment
Вы имеете в виду несколько экземпляров app2, запущенных на разных машинах?   -  person Reinstate Monica Cellio    schedule 30.08.2018
comment
@Damien_The_Unbeliever Я думаю, правда заключается в том, что компаниям, связанным с финансами, им нужно пройти через множество проблем, чтобы установить что-то новое, если можно предоставить приложение без необходимости этого, они просто выберут свой продукт , и я говорю им, что есть готовый инструмент, и я потерял свой бизнес из-за того, что не смог предоставить им больше удобства.   -  person csamleong    schedule 30.08.2018
comment
@Archer nope, первое приложение 2, работает на том же компьютере. Но в будущем несколько экземпляров могут перейти на разные машины. Я надеюсь найти более гибкое решение.   -  person csamleong    schedule 30.08.2018
comment
Тогда это да - будет несколько экземпляров app2, работающих на разных машинах. Вы не можете спроектировать это иначе, чем то, чем оно будет, иначе вы спроектируете это так, чтобы оно провалилось. Тем не менее, это все еще можно сделать просто. Вы пробовали что-нибудь сами или просто исследовали, что там есть?   -  person Reinstate Monica Cellio    schedule 30.08.2018
comment
Можем ли мы определить, что включено / исключено правилом стороннего инструмента? Например. NServiceBus - это фактически библиотека, которую вы можете самостоятельно разместить в своих собственных приложениях, а также доступную транспортную библиотеку SQL Server. Никакой установки каких-либо других продуктов не будет, только тот факт, что несколько дополнительных DLL теперь находятся в вашем bin каталоге.   -  person Damien_The_Unbeliever    schedule 30.08.2018


Ответы (1)


Ознакомьтесь с библиотекой Rebus, которая позволяет использовать различные транспортные методы для отправки и получения сообщений в кратчайшие сроки. строка кода (так что в будущем вы можете без труда изменить ее).

Вы можете использовать SQL Server или попытаться разработать собственный метод транспортировки.

person Martino Bordin    schedule 30.08.2018
comment
Он говорит, что клиент не может разрешить установку какого-либо стороннего инструмента .. Rebus не является инструментом для установки .. Если у него уже есть SQL Server, он может его использовать, в противном случае он может использовать библиотеку для разработки своего собственного метода транспортировки. - person Martino Bordin; 30.08.2018
comment
О да. Кажется, у него есть MSSQL ... извините. - person Fildor; 30.08.2018
comment
@MartinoBordin, спасибо за ваш ответ, похоже, что независимо от того, как мне все еще нужно прибегать к средствам для публикации / подписки? Можно ли просто сохранить очередь в кеше моей службы? Скажем, у меня есть app1 как сервис, он может публиковать, экземпляры app2 просто подпишутся на него? - person csamleong; 30.08.2018
comment
Для общения требуется среда. Если у вас есть 2 разных приложения, они работают в собственном домене приложений, поэтому кеш недоступен извне. В противном случае вам следует использовать распределенный кеш (вы не можете установить). - person Martino Bordin; 30.08.2018