CSS EDV Support Logo

MESO-NotificationService

AddOn für die Mesonic WinLine ©

Stand: 11.03.2025



MESO-NotifierService Dokumentation

ℹ️ Download dieser Dokumentation als pdf

Übersicht

Der MESO-NotifierService Dienst (als Docker-Container) veröffentlicht Redis Messages sobald Änderungen an SQL-Tabellen (INSERT, UPDATE, DELETE) durchgeführt wurden. Dazu werden frei konfigurierbare Tabellen oder MesoXPO©-Objekte überwacht und entsprechende Nachrichten für INSERTED, UPDATED und DELETED an einen konfigurierbaren Redis-Dienst und optional beliebige WebHooks gesendet.

Die zu überwachenden Tabellen und Spalten werden in der appsettings.json Datei bzw. der Docker-Compose spezifiziert.

In dieser können sowohl manuell eigene Tabellen/Spalten zur Überwachung spezifiziert werden, als auch durch Angabe der im MESO-XPO Framework (© Tobias Forbrich - CSS EDV Support) enthaltenen Klassen-Bezeichnungen für alle bekannten Mesonic WinLine © Tabellen aus dem Repository automatisch alle Spalten der jeweiligen Tabelle überwacht werden.

Einsatzzwecke

Der Dienst richtet sich vor allem an Mesonic MDP - Partner, die (verteilte) Anwendungen entwickeln möchten, welche in Echtzeit auf Änderungen in WinLine© Daten reagieren möchten. Z.B. für Datenübertragungen an Fremdsysteme, Push-Benachrichtungen (SMS, eMail) etc.

C# Beispielcode

Ein Beispiel für einen Redis-Subscriber in C#, der Nachrichten vom Kanal “t170” abonniert und verarbeitet. Für die Implementierung wird hier die StackExchange.Redis-Bibliothek verwendet.

Hinzufügen der StackExchange.Redis-Bibliothek:

dotnet add package StackExchange.Redis

Beispielcode für einen Redis-Subscriber, der auf Änderungen in der T170 Tabelle reagiert:

using System;
using StackExchange.Redis;
using System.Text.Json;

// Eine mögliche C#-Klass für eine Entität der Tabelle t170
public class Fall
{
    public string Mesocomp { get; set; }
    public int Mesokey { get; set; }
    public int Schrittnummer { get; set; }
    public int Id { get; set; }
}

public class Message
{
    public string Action { get; set; }
    public string TableName { get; set; }
    public string KeyValue { get; set; }
    public DateTime Timestamp { get; set; }
    public string EntityType { get; set; }
    public Fall Entity { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // Verbindung zu Redis herstellen
        ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");

        // Subscriber-Instanz erstellen
        ISubscriber subscriber = redis.GetSubscriber();

        // Kanal abonnieren
        subscriber.Subscribe("t170", (channel, message) =>
        {
            // JSON-Nachricht deserialisieren
            var jsonMessage = message.ToString();
            var deserializedMessage = JsonSerializer.Deserialize<Message>(jsonMessage);

            // Verarbeiten der deserialisierten Nachricht
            Console.WriteLine($"Action: {deserializedMessage.Action}");
            Console.WriteLine($"TableName: {deserializedMessage.TableName}");
            Console.WriteLine($"KeyValue: {deserializedMessage.KeyValue}");
            Console.WriteLine($"Timestamp: {deserializedMessage.Timestamp}");
            Console.WriteLine($"EntityType: {deserializedMessage.EntityType}");
            Console.WriteLine($"Entity Mesocomp: {deserializedMessage.Entity.Mesocomp}");
            Console.WriteLine($"Entity Fall-Id: {deserializedMessage.Entity.Id}");
            // Weitere Felder nach Bedarf ausgeben
        });

        Console.WriteLine("Abonniert auf Kanal 't170'. Drücken Sie eine beliebige Taste, um zu beenden...");
        Console.ReadKey();
    }
}

Voraussetzungen

Konfiguration

Der Dienst wird über die appsettings.json Datei konfiguriert. Unten ist eine Beispielkonfiguration aufgeführt.

In Docker werden die Einstellungen als Environment Variable aufgeführt.

appsettings.json

{
  "ConnectionStrings": {
    "WinLineConnectionString": "Data Source=demoserver;User ID=meso;Password=xxxxxxx;Initial Catalog=CWLDATEN",
    "RedisConnectionString": "localhost:6379"
  },
 "AppSettings": {
    "InstanceIdForRedisMessages": "DEMO",
    "ForwardWebHookUrls": [
      "https://hook1",
      "https://hook2"
    ],
    "MesoXpoObjectsToMonitor": [
      "Projektstamm",
      "CrmIncidencesUndSchritte"
    ],
    "TablesToMonitor": [
      {
        "TableName": "t001",
        "EntityName": "Company",
        "KeyProperty": "Mesoprim",
        "ColumnMappings": [
          {
            "ColumnName": "mesocomp",
            "Name": "Mesocomp",
            "Type": "System.String"
          },
          {
            "ColumnName": "mesoyear",
            "Name": "Mesoyear",
            "Type": "System.Int32"
          },
          {
            "ColumnName": "mesoprim",
            "Name": "Mesoprim",
            "Type": "System.String"
          },
          {
            "ColumnName": "c000",
            "Name": "Company",
            "Type": "System.String"
          }
        ]
      },
      {
        "TableName": "t024",
        "EntityName": "ProductBase",
        "KeyProperty": "Mesoprim",
        "ColumnMappings": [
          {
            "ColumnName": "mesocomp",
            "Name": "Mesocomp",
            "Type": "System.String"
          },
          {
            "ColumnName": "mesoyear",
            "Name": "Mesoyear",
            "Type": "System.Int32"
          },
          {
            "ColumnName": "mesoprim",
            "Name": "Mesoprim",
            "Type": "System.String"
          },
          {
            "ColumnName": "c002",
            "Name": "Number",
            "Type": "System.String"
          },
          {
            "ColumnName": "c003",
            "Name": "Name",
            "Type": "System.String"
          },
          {
            "ColumnName": "c068",
            "Name": "BatchOrSerialNumber",
            "Type": "System.String"
          },
          {
            "ColumnName": "c014",
            "Name": "ExtensionFlag",
            "Type": "System.Int32"
          },
          {
            "ColumnName": "c038",
            "Name": "InactiveSince",
            "Type": "System.DateTime"
          },
          {
            "ColumnName": "c071",
            "Name": "DateCreated",
            "Type": "System.DateTime"
          },
          {
            "ColumnName": "c072",
            "Name": "DateChanged",
            "Type": "System.DateTime"
          }
        ]
      },
      {
        "TableName": "t055",
        "EntityName": "Account",
        "KeyProperty": "Mesoprim",
        "ColumnMappings": [
          {
            "ColumnName": "mesocomp",
            "Name": "Mesocomp",
            "Type": "System.String"
          },
          {
            "ColumnName": "mesoyear",
            "Name": "Mesoyear",
            "Type": "System.Int32"
          },
          {
            "ColumnName": "mesoprim",
            "Name": "Mesoprim",
            "Type": "System.String"
          },
          {
            "ColumnName": "c002",
            "Name": "Number",
            "Type": "System.String"
          },
          {
            "ColumnName": "c003",
            "Name": "Name",
            "Type": "System.String"
          },
          {
            "ColumnName": "c004",
            "Name": "AccountType",
            "Type": "System.String"
          },
          {
            "ColumnName": "c086",
            "Name": "DateCreated",
            "Type": "System.DateTime"
          },
          {
            "ColumnName": "c087",
            "Name": "DateChanged",
            "Type": "System.DateTime"
          }
        ]
      },
      {
        "TableName": "t043",
        "EntityName": "PriceList",
        "KeyProperty": "Mesokey",
        "ColumnMappings": [
          {
            "ColumnName": "mesocomp",
            "Name": "Mesocomp",
            "Type": "System.String"
          },
          {
            "ColumnName": "mesoyear",
            "Name": "Mesoyear",
            "Type": "System.Int32"
          },
          {
            "ColumnName": "mesokey",
            "Name": "Mesokey",
            "Type": "System.Int32"
          },
          {
            "ColumnName": "c000",
            "Name": "ProductNumber",
            "Type": "System.String"
          },
          {
            "ColumnName": "c001",
            "Name": "PriceType",
            "Type": "System.String"
          },
          {
            "ColumnName": "c002",
            "Name": "PriceList",
            "Type": "System.Int32"
          },
          {
            "ColumnName": "c003",
            "Name": "AccountNumber",
            "Type": "System.String"
          },
          {
            "ColumnName": "c004",
            "Name": "ValidFrom",
            "Type": "System.DateTime"
          },
          {
            "ColumnName": "c005",
            "Name": "ValidTo",
            "Type": "System.DateTime"
          },
          {
            "ColumnName": "c006",
            "Name": "Quantity",
            "Type": "System.Double"
          },
          {
            "ColumnName": "c013",
            "Name": "Price",
            "Type": "System.Double"
          },
          {
            "ColumnName": "c035",
            "Name": "DateCreated",
            "Type": "System.DateTime"
          },
          {
            "ColumnName": "c036",
            "Name": "DateChanged",
            "Type": "System.DateTime"
          }
        ]
      }
    ]
  }
}

ConnectionStrings

AppSettings

Hinweis zur Auflistung TablesToMonitor
Hinweis zur Auflistung ColumnMappings

docker-compose Beispiel

version: '3.9'

services:
  mesonotifier-demo:
    image: ghcr.io/css-edv-support/mesonotificationservice:latest
    container_name: mesonotifier-demo
    restart: unless-stopped
    hostname: mesonotifier-demo
    ports:
      - "8123:8080"
    networks:
      - proxy
    environment: 
      - AppSettings__InstanceIdForRedisMessages=demo
      - AppSettings__MesoXpoObjectsToMonitor__0=Projektstamm
      - AppSettings__MesoXpoObjectsToMonitor__1=CrmIncidencesUndSchritte
      - AppSettings__TablesToMonitor__0__ColumnMappings__0__ColumnName=mesocomp
      - AppSettings__TablesToMonitor__0__ColumnMappings__0__Name=Mesocomp
      - AppSettings__TablesToMonitor__0__ColumnMappings__0__Type=System.String
      - AppSettings__TablesToMonitor__0__ColumnMappings__1__ColumnName=mesoyear
      - AppSettings__TablesToMonitor__0__ColumnMappings__1__Name=Mesoyear
      - AppSettings__TablesToMonitor__0__ColumnMappings__1__Type=System.Int32
      - AppSettings__TablesToMonitor__0__ColumnMappings__2__ColumnName=mesoprim
      - AppSettings__TablesToMonitor__0__ColumnMappings__2__Name=Mesoprim
      - AppSettings__TablesToMonitor__0__ColumnMappings__2__Type=System.String
      - AppSettings__TablesToMonitor__0__ColumnMappings__3__ColumnName=c000
      - AppSettings__TablesToMonitor__0__ColumnMappings__3__Name=Company
      - AppSettings__TablesToMonitor__0__ColumnMappings__3__Type=System.String
      - AppSettings__TablesToMonitor__0__EntityName=Company
      - AppSettings__TablesToMonitor__0__TableName=t001
      - AppSettings__TablesToMonitor__1__ColumnMappings__0__ColumnName=mesocomp
      - AppSettings__TablesToMonitor__1__ColumnMappings__0__Name=Mesocomp
      - AppSettings__TablesToMonitor__1__ColumnMappings__0__Type=System.String
      - AppSettings__TablesToMonitor__1__ColumnMappings__1__ColumnName=mesoyear
      - AppSettings__TablesToMonitor__1__ColumnMappings__1__Name=Mesoyear
      - AppSettings__TablesToMonitor__1__ColumnMappings__1__Type=System.Int32
      - AppSettings__TablesToMonitor__1__ColumnMappings__2__ColumnName=mesoprim
      - AppSettings__TablesToMonitor__1__ColumnMappings__2__Name=Mesoprim
      - AppSettings__TablesToMonitor__1__ColumnMappings__2__Type=System.String
      - AppSettings__TablesToMonitor__1__ColumnMappings__3__ColumnName=c002
      - AppSettings__TablesToMonitor__1__ColumnMappings__3__Name=Number
      - AppSettings__TablesToMonitor__1__ColumnMappings__3__Type=System.String
      - AppSettings__TablesToMonitor__1__ColumnMappings__4__ColumnName=c003
      - AppSettings__TablesToMonitor__1__ColumnMappings__4__Name=Name
      - AppSettings__TablesToMonitor__1__ColumnMappings__4__Type=System.String
      - AppSettings__TablesToMonitor__1__ColumnMappings__5__ColumnName=c068
      - AppSettings__TablesToMonitor__1__ColumnMappings__5__Name=BatchOrSerialNumber
      - AppSettings__TablesToMonitor__1__ColumnMappings__5__Type=System.String
      - AppSettings__TablesToMonitor__1__ColumnMappings__6__ColumnName=c014
      - AppSettings__TablesToMonitor__1__ColumnMappings__6__Name=ExtensionFlag
      - AppSettings__TablesToMonitor__1__ColumnMappings__6__Type=System.Int32
      - AppSettings__TablesToMonitor__1__ColumnMappings__7__ColumnName=c038
      - AppSettings__TablesToMonitor__1__ColumnMappings__7__Name=InactiveSince
      - AppSettings__TablesToMonitor__1__ColumnMappings__7__Type=System.DateTime
      - AppSettings__TablesToMonitor__1__ColumnMappings__8__ColumnName=c071
      - AppSettings__TablesToMonitor__1__ColumnMappings__8__Name=DateCreated
      - AppSettings__TablesToMonitor__1__ColumnMappings__8__Type=System.DateTime
      - AppSettings__TablesToMonitor__1__ColumnMappings__9__ColumnName=c072
      - AppSettings__TablesToMonitor__1__ColumnMappings__9__Name=DateChanged
      - AppSettings__TablesToMonitor__1__ColumnMappings__9__Type=System.DateTime
      - AppSettings__TablesToMonitor__1__EntityName=ProductBase
      - AppSettings__TablesToMonitor__1__TableName=t024
      - AppSettings__TablesToMonitor__2__ColumnMappings__0__ColumnName=mesocomp
      - AppSettings__TablesToMonitor__2__ColumnMappings__0__Name=Mesocomp
      - AppSettings__TablesToMonitor__2__ColumnMappings__0__Type=System.String
      - AppSettings__TablesToMonitor__2__ColumnMappings__1__ColumnName=mesoyear
      - AppSettings__TablesToMonitor__2__ColumnMappings__1__Name=Mesoyear
      - AppSettings__TablesToMonitor__2__ColumnMappings__1__Type=System.Int32
      - AppSettings__TablesToMonitor__2__ColumnMappings__2__ColumnName=mesoprim
      - AppSettings__TablesToMonitor__2__ColumnMappings__2__Name=Mesoprim
      - AppSettings__TablesToMonitor__2__ColumnMappings__2__Type=System.String
      - AppSettings__TablesToMonitor__2__ColumnMappings__3__ColumnName=c002
      - AppSettings__TablesToMonitor__2__ColumnMappings__3__Name=Number
      - AppSettings__TablesToMonitor__2__ColumnMappings__3__Type=System.String
      - AppSettings__TablesToMonitor__2__ColumnMappings__4__ColumnName=c003
      - AppSettings__TablesToMonitor__2__ColumnMappings__4__Name=Name
      - AppSettings__TablesToMonitor__2__ColumnMappings__4__Type=System.String
      - AppSettings__TablesToMonitor__2__ColumnMappings__5__ColumnName=c004
      - AppSettings__TablesToMonitor__2__ColumnMappings__5__Name=AccountType
      - AppSettings__TablesToMonitor__2__ColumnMappings__5__Type=System.String
      - AppSettings__TablesToMonitor__2__ColumnMappings__6__ColumnName=c086
      - AppSettings__TablesToMonitor__2__ColumnMappings__6__Name=DateCreated
      - AppSettings__TablesToMonitor__2__ColumnMappings__6__Type=System.DateTime
      - AppSettings__TablesToMonitor__2__ColumnMappings__7__ColumnName=c087
      - AppSettings__TablesToMonitor__2__ColumnMappings__7__Name=DateChanged
      - AppSettings__TablesToMonitor__2__ColumnMappings__7__Type=System.DateTime
      - AppSettings__TablesToMonitor__2__EntityName=Account
      - AppSettings__TablesToMonitor__2__TableName=t055
      - AppSettings__TablesToMonitor__3__ColumnMappings__0__ColumnName=mesocomp
      - AppSettings__TablesToMonitor__3__ColumnMappings__0__Name=Mesocomp
      - AppSettings__TablesToMonitor__3__ColumnMappings__0__Type=System.String
      - AppSettings__TablesToMonitor__3__ColumnMappings__1__ColumnName=mesoyear
      - AppSettings__TablesToMonitor__3__ColumnMappings__1__Name=Mesoyear
      - AppSettings__TablesToMonitor__3__ColumnMappings__1__Type=System.Int32
      - AppSettings__TablesToMonitor__3__ColumnMappings__10__ColumnName=c013
      - AppSettings__TablesToMonitor__3__ColumnMappings__10__Name=Price
      - AppSettings__TablesToMonitor__3__ColumnMappings__10__Type=System.Double
      - AppSettings__TablesToMonitor__3__ColumnMappings__11__ColumnName=c035
      - AppSettings__TablesToMonitor__3__ColumnMappings__11__Name=DateCreated
      - AppSettings__TablesToMonitor__3__ColumnMappings__11__Type=System.DateTime
      - AppSettings__TablesToMonitor__3__ColumnMappings__12__ColumnName=c036
      - AppSettings__TablesToMonitor__3__ColumnMappings__12__Name=DateChanged
      - AppSettings__TablesToMonitor__3__ColumnMappings__12__Type=System.DateTime
      - AppSettings__TablesToMonitor__3__ColumnMappings__2__ColumnName=mesokey
      - AppSettings__TablesToMonitor__3__ColumnMappings__2__Name=Mesokey
      - AppSettings__TablesToMonitor__3__ColumnMappings__2__Type=System.Int32
      - AppSettings__TablesToMonitor__3__ColumnMappings__3__ColumnName=c000
      - AppSettings__TablesToMonitor__3__ColumnMappings__3__Name=ProductNumber
      - AppSettings__TablesToMonitor__3__ColumnMappings__3__Type=System.String
      - AppSettings__TablesToMonitor__3__ColumnMappings__4__ColumnName=c001
      - AppSettings__TablesToMonitor__3__ColumnMappings__4__Name=PriceType
      - AppSettings__TablesToMonitor__3__ColumnMappings__4__Type=System.String
      - AppSettings__TablesToMonitor__3__ColumnMappings__5__ColumnName=c002
      - AppSettings__TablesToMonitor__3__ColumnMappings__5__Name=PriceList
      - AppSettings__TablesToMonitor__3__ColumnMappings__5__Type=System.Int32
      - AppSettings__TablesToMonitor__3__ColumnMappings__6__ColumnName=c003
      - AppSettings__TablesToMonitor__3__ColumnMappings__6__Name=AccountNumber
      - AppSettings__TablesToMonitor__3__ColumnMappings__6__Type=System.String
      - AppSettings__TablesToMonitor__3__ColumnMappings__7__ColumnName=c004
      - AppSettings__TablesToMonitor__3__ColumnMappings__7__Name=ValidFrom
      - AppSettings__TablesToMonitor__3__ColumnMappings__7__Type=System.DateTime
      - AppSettings__TablesToMonitor__3__ColumnMappings__8__ColumnName=c005
      - AppSettings__TablesToMonitor__3__ColumnMappings__8__Name=ValidTo
      - AppSettings__TablesToMonitor__3__ColumnMappings__8__Type=System.DateTime
      - AppSettings__TablesToMonitor__3__ColumnMappings__9__ColumnName=c006
      - AppSettings__TablesToMonitor__3__ColumnMappings__9__Name=Quantity
      - AppSettings__TablesToMonitor__3__ColumnMappings__9__Type=System.Double
      - AppSettings__TablesToMonitor__3__EntityName=PriceList
      - AppSettings__TablesToMonitor__3__TableName=t043
      - ConnectionStrings__RedisConnectionString=redisserver:6379
      - ConnectionStrings__WinLineConnectionString=Data Source=<SERVER>;User ID=meso;Password=<Pass>;Initial Catalog=CWLDATEN
      - Serilog__MinimumLevel__Default=Debug
      - Serilog__MinimumLevel__Override__Microsoft=Information
      - Serilog__MinimumLevel__Override__System=Warning
      - Serilog__WriteTo__0__Name=Console
      - Serilog__WriteTo__1__Args__path=logs/log-.txt
      - Serilog__WriteTo__1__Args__rollingInterval=Day
      - Serilog__WriteTo__1__Name=File


networks:
  proxy:
    external: true

Zur Erzeugung der Umgebungsvariablen ist dieses Tool Json to environment converter hilfreich.

Voraussetzungen

Für die Benachrichtigung werden SqlTableDependencies erstellt, welche am SQL Server die Service Broker Funktionalität in Verbindung mit Tabellen-Triggern erzeugt. Hierzu sind folgende Vorraussetzungen nötig:

  1. Stellen Sie sicher, dass der SQL Server Service Broker für die Datenbank aktiviert ist:
ALTER DATABASE [Datenbankname] SET ENABLE_BROKER;
  1. Stellen Sie sicher, dass der im WinLineConnectionString angegebene Benutzer db_owner der Datenbank ist
 USE DATABASE [Datenbankname];
 sp_changedbowner 'meso'

Hinweise zu den Redis Nachrichten

Es empfiehlt sich eine UI zur Überwachung der Redis-Datenbank, z.B. Redis Insight zu verwenden.

Redis Insights - Channels

Channel-Namen

Die Channel werden mit der phyiskalischen Bezeichnung der Tabelle benannt - z.B. T024.

Nachrichteninhalt

Es wird eine Nachricht vom Typ DataEntityMessageim json Format bereitgestellt, die folgende Eigenschaften beinhaltet:

public record DataEntityMessage
{
    public string InstanceId { get; set; }
    public string Action { get; set; }
    public string TableName { get; set; }
    public string KeyValue { get; set; }
    public DateTime Timestamp { get; } = DateTime.Now;
    public string EntityType => Entity.GetType().Name;
    public object Entity { get; set; }
}

Hierbei wird die Eigenschaft Entity mit einem generischin Typ auf Basis der Tabelleneigenschaften erzeugt.

Folgend eine Beispielnachricht für die Tabelle T055, die in o.g. Beispiel-Konfiguration manuell in den TablesToMonitor angegeben wurde:

{
    "Action": "Updated",
    "TableName": "t055",
    "Timestamp": "2024-05-18T14:59:41.4975989+00:00",
    "KeyValue": "10003-500M-1476",
    "EntityType": "DynamicEntity_Account",
    "Entity": {
        "Mesocomp": "500M",
        "Mesoyear": 1476,
        "Mesoprim": "10003-500M-1476",
        "Number": "10003",
        "Name": "Auermann Sport GmbH",
        "AccountType": "2",
        "DateCreated": "2010-01-01T08:51:00",
        "DateChanged": "2024-05-18T16:59:41"
    }
}

Folgend eine Beispielnachricht für das Meso-XPO Objekt Projektstamm, welches in o.g. Beispiel-Konfiguration manuell in den MesoXpoObjectsToMontior angegeben wurde:

{
    "InstanceId": "DEMO",
    "Action": "Updated",
    "TableName": "T060",
    "KeyValue": "2024-0001-500M-1488",
    "Timestamp": "2024-05-18T17:06:10.373056+02:00",
    "EntityType": "DynamicEntity_Projektstamm",
    "Entity": {
        "Mesocomp": "500M",
        "Mesoyear": 1488,
        "Mesoprim": "2024-0001-500M-1488",
        "Mesosafe": 0,
        "ts": "AAAAAABQnhE=",
        "ProjektEndePreSales": null,
        "Bezeichnung1": "adfcsx",
        "Typenflags": null,
        "StatusPostSales": 0,
        "Zusatzfelder": "060-2024-0001",
        "ProjektEndePostSales": null,
        "ProjektumfangPostsalesAktuell": 0,
        "Projektverantwortlicher": 0,
        "Bild": null,
        "ProjektfortschrittSatzAktuell": 0,
        "Aktionsliste": null,
        "GuidEigenschaft": null,
        "Parentkey": null,
        "Kostentraeger": null,
        "AbschlusswahrscheinlichkeitSatzAktuell": 0,
        "InaktivSeit": null,
        "Debitor": null,
        "Projektnummer": "2024-0001",
        "Vertreter": 0,
        "EximKennzeichen": 1,
        "Bezeichnung2": "bez 4",
        "StatusPreSales": 0,
        "KzKostentraegerErforderlich": 0,
        "Projektgruppe": null,
        "Usernr": 0,
        "Zusatzleiste": "060-0000",
        "ProjektumfangPresalesAktuell": 0,
        "ProjektBeginn": "2024-05-18T00:00:00",
        "KzKundenprojektKampagne": 0
    }
}

Api Methoden

Der MESO-NotfierDienst stellt folgende Api-Methoden zur Verfügung (sofern über die Docker-Konfiguration der Zugriff auf den internen Standardport 8080 konfiguriert wurde:

ActiveChannels

Liefert alle redis-Kanäle, in welchen Nachrichten publiziert wurden (als Datensätze geändert/erzeugt/gelöscht wurden)

Beispiel http://<Hostname>/redis/activechannels

messages/{channel}

Liefert alle Nachrichten im angegebenen Kanal

Beispiel http://<Hostname>/redis/messages/t055

subscribedchannels

Liefert alle Kanäle, die von einem Redis-Subscriber Abonniert wurden

Beispiel http://<Hostname>/redis/subscribedchannels

Lizenzhinweise

MESO-NotifierService

Bitte wenden Sie sich hierzu an Ihren Mesonic-Partner oder an Tobias Forbrich - CSS EDV Support

NuGet-Paket: SqlTableDependency

Urheber: Copyright (c) 2017-2018 Christian Del Bianco. All rights reserved.

Lizenz: Dieses Paket wird unter der MIT-Lizenz verwendet. Die MIT-Lizenz erlaubt es, die Software zu nutzen, zu kopieren, zu verändern, zu fusionieren, zu veröffentlichen, zu vertreiben, zu unterlizenzieren und/oder zu verkaufen, solange die Urheberrechtsvermerke und die Erlaubnisvermerke in allen Kopien oder wesentlichen Teilen der Software enthalten sind.