Мне нужно написать веб-приложение с помощью java webgui Vaadin Framework, который будет обновляться в режиме реального времени с новыми записями, вставленными в базу данных MsSQL с помощью NPS MsWin2k8R2.Java + Ms SQL Server 2008 R2 после вставки триггерного уведомления
Поскольку NPS хранит журналы в файлах и/или DB, я предпочитаю БД, но я хотел бы знать, как моя Java-программа может быть уведомлена сервером SQL, когда сервер NPS вставляет данные в базу данных, а затем повторно извлекает или извлекает из уведомления SQL Server и отобразить его в браузере.
У меня уже есть Java < -> Установлено соединение Ms SQL.
То, что я уже знаю:
- SqlDependency класс может быть использован, но это только для .NET, и я работаю в Java
- SQL Server Service Broker - это своего рода особенность в SQL Server, которые могут быть использованы для этого, но я в настоящее время не могут правильно понять, как это сделать и что это на самом деле
- SQL Extended Events - то же самое, что и выше
- SQL Notifications - такой же, как и выше
- SQL CRL Триггеры - триггер, написанный на C++, C# или, возможно, на Java, который выполняется в указанной ситуации, но это выполняется синхронно и замедляет всю операцию.
Теперь. Я нашел этот пост: https://stackoverflow.com/a/534831/1235977
я предложил бы иметь триггер на таблицу, которая вызывает SQL Server Service Broker, который затем (асинхронно) выполняет хранимую процедуру CLR, которая делает всю работу в другой нить.
Но я не знаю, как это сделать.
Так что мне нужно: Простая таблица в SQL Server, которая при вставке данных будет как-то уведомлять мою Java-программу. Он может использовать веб-службы REST, JMS или что-то, что не зависит от языка.
Просьба предоставить пошаговые примеры/решения.
Возможно ли выполнить асинхронно хранимую процедуру из триггера? Я видел, как кто-то сказал, что такое, как это, может значительно замедлить работу БД, и я не могу позволить этому случиться, так что асинхронный запуск является обязательным. Но спасибо за ответ. Когда я проверю, работает ли это, я помечаю этот ответ как ummm. Ответ :-) – termil0r
Триггер - проблема производительности. Ты прав. Вы не можете вызывать sql sp асинхронно, но вы можете выполнить асинхронный вызов для кода C#, который будет вызывать службу REST. –