Хороший способ связи между несколькими базами данных SQL с использованием Entity-Framework Core / RabbitMQ и HTTP API - PullRequest
0 голосов
/ 05 октября 2018

Я создал приложение API ASP.Net core 2.0, чтобы при поступлении запроса на добавление он добавлял запрос в Que (rabbitMQ) и затем записывал его в базу данных при получении запроса. Этот запрос может быть получен.в нескольких проектах в рамках моего решения для записи в разные базы данных с использованием структуры сущностей.

Однако подумайте об этом, если я хочу отправлять данные из одной базы данных в другую, используя этот метод, как мой SQL-сервер фактически вызывает эти методы APIс данными JSON хотел быть добавлен в другую базу данных.

Эта идея совершенно неверна?Должно ли это быть сделано по-другому?

1 Ответ

0 голосов
/ 05 октября 2018

Я хочу отправить данные из 1 базы данных в другую, используя этот метод, как мой SQL-сервер на самом деле вызывает эти методы API с данными json, которые нужно добавить в другую базу данных.

Самый простой шаблон - добавить простую таблицу в каждую базу данных, которая будет служить «исходящей очередью», имеющей столбец JSON message_body и любые метаданные сообщения, которые вы хотите.Затем проведите опрос служб приложений и выполните «деструктивное чтение» этих таблиц, перенаправив данные в соответствующую очередь.

например,

create table outgoing_queue(id bigint identity primary key, message_type varchar(200), message_body nvarchar(max))
go


declare @msg nvarchar(max) = (select * from sys.objects for json auto)

insert into outgoing_queue(message_type,message_body)
values ('message type a', @msg)

go 10 ;


--from the app tier
with q as
(
  select top 1 *
  from outgoing_queue 
  order by id 
)
delete from q
output deleted.*
...