Пример кода для триггера SQL для генерации сообщения MQTT - PullRequest
0 голосов
/ 03 июня 2019

Я менеджер проекта (а не опытный разработчик), занимающийся разработкой интерфейсного решения для двух корпоративных приложений.Мне нужно написать проектный документ с описанием интерфейса между системой управления процессом и базой данных.Я хочу предоставить пример кода SQL Trigger, чтобы помочь мне объяснить процесс.Кто-нибудь может подсказать мне какой-нибудь код триггера SQL, который может генерировать MQTT-сообщение?Пример кода должен сработать при вставке или обновлении, а затем сгенерировать сообщение MQTT, содержащее некоторые поля из затронутой строки.Не нужно ждать подтверждения.SQL-сервер будет работать в Windows, а MQTT-брокер - в Linux.Я буду использовать Nodered для получения сообщения MQTT, немного применю бизнес-логику, а затем сгенерирую сообщение OPC-UA для получения системой управления процессом.Также было бы хорошо, если бы сообщение MQTT могло содержать флаг, который указывает, был ли триггер обновлением или вставкой.Я предполагаю, что мне нужно будет установить MQTT cient на сервере SQL, например, MQTT.FX (https://mqttfx.jensd.de/index.php)

1 Ответ

0 голосов
/ 03 июня 2019

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

. Вы можете использовать .Net MQTT-клиент прямо внутри SQL Server, но я бы не рекомендовал его, поскольку SQL Server будет выгружать сборку всякий раз, когда ему это нравится, и осиротит все сокеты, и они будут находиться в подвешенном состоянии до перезапуска сервера. .

Способ обойти это - создать службу Windows, в которой размещается служба WCF, которая содержит экземпляр клиента MQTT и предоставлять методы WCF для публикации или подписки (попробуйте использовать MQTTNet - https://github.com/chkr1011/MQTTnet).

Как только ваш сервер WCF будет завершен, вам нужно будет создать сборку SQL CLR (https://code.msdn.microsoft.com/Calling-WCF-Service-from-a-8071ceaa) для вызова службы WCF, не забывайте, что в SQL 2017 для вас будет необходимо иметь строгое имя сборки для установить правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...