170 похожих чатов

Вопрос не совсем по дотнету. Есть два сервиса на C#, которые

должны общаться через RabbitMQ. В одном сервисе создали новую сущность, например, Product. Как дать знать об этом другому сервису? Надо чтобы у другого сервиса в БД тоже появилась эта сущность. Причём такие манипуляции возможны относительно и других методов CRUD. Искал инфу не нашёл. Как правильно все это сделать? Не хочется велосипеды изобретать

24 ответов

19 просмотров

ставишь масстранзит, описываешь событие ProductCreated, кидаешь его, в других сервисах подписываешься

а использовать одну субд на 2 сервиса получится?

Тригеры, вызывать сторонние функции для синхронизации, передача параметров что изменилось. Есть куча примитивов передачи данных как сотворить любое непотребство )

Мαкс
а использовать одну субд на 2 сервиса получится?

если одна субд для двух сервисов то у тебя неявный монолит со всеми проблемами монолитного приложения.

если я понимаю верно суть брокеров сообщений, то ты кидаешь туда сообщение (publish), а подписчик слушает (pooling) и если пришло нужное событие обрабатывает его как ему угодно, например положил в другую бд. это все встроено в кролика.

Magomed-Mirzaev Автор вопроса
_Д_
если я понимаю верно суть брокеров сообщений, то т...

А как кролик поймёт какого типа сущность была создана, о том что она была создана, а не изменена? Я как понял там просто текст передаётся

у меня есть на проектик на датнете он ультра простой, по универу делали, там один посылает в ребит другой принимает и записывает в 2 разных бд, все на докере, могу скинуть если это полезно

Magomed Mirzaev
А как кролик поймёт какого типа сущность была созд...

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

_Д_
ты описываешь свою объектную модель событий. ты мо...

бестпрактис не придумывать велосипеды для сериализации, а взять масс транзит, который все это делает из коробки

βλαδιμιρ
бестпрактис не придумывать велосипеды для сериализ...

звучит классно. можешь ссылку кинуть что это такое?

βλαδιμιρ
бестпрактис не придумывать велосипеды для сериализ...

Кстати, а MassTransit сейчас сколько поддерживает уже из коробки брокеров и сериализаторов?

Dmitriy Bobrovskiy
Так лучше, но чутка сложнее.

У вас есть такая штука, чтобы не было конструктора копирования, а передавала по-значению стразу же в данный объект

Zigzag Hax
У вас есть такая штука, чтобы не было конструктора...

можно через сереализацию и дессериализацию долбануть

Dmitriy Bobrovskiy
Сударь, C# и C++ отличаются а этом пипец как

Я и хочу узнать все прелести Шарпов, так как удобная штука для быстрых вещей и показать моментом. На подобии Питона, но по-красивше

Larymar GC
шарп не для быстрых решений)

Уж быстрее, чем на плюсах городить год-обжекты

Dmitriy Bobrovskiy
Ну, эт неправда.

имхо с питоном покататься по клаве лицом

Zigzag Hax
Уж быстрее, чем на плюсах городить год-обжекты

Это не от языка, а от кривизны рук зависит. На плюсах пишется вполне себе элегантный и функциональный код.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта