Projektzuordnung von Monitoring-Objekten ermitteln

  • Post
    julianma
    Teilnehmer
    Hallo,

    meine konkrete Frage ist, wie ich in einem Plugin-Adapter zu einem Monitoring-Objekt (Datenquelle) die entsprechenden Projektzuordnungen ermitteln kann.

     

    Der dahinterstehende Use-Case ist etwas komplizierter zu erklären und erstmal nebensächlich.
    Passiert im Monitoring eine Grenzwertüberschreitung mit der Aktion “Nachricht erzeugen”, wird eine folgende Beispielnachricht erzeugt:

    <hr />

    <code class=”xml plain”><<code class=”xml keyword”>ROOT<code class=”xml plain”>>
    <code class=”xml spaces”>    <code class=”xml plain”><<code class=”xml keyword”>CONSTRAINT <code class=”xml color1″>ID<code class=”xml plain”>=<code class=”xml string”>”2899″<code class=”xml plain”>>Constraint = Suspended >= 60 s<<code class=”xml keyword”>METADATA <code class=”xml color1″>ID<code class=”xml plain”>=<code class=”xml string”>”2″<code class=”xml plain”>>State</<code class=”xml keyword”>METADATA<code class=”xml plain”>>
    <code class=”xml spaces”>        <code class=”xml plain”><<code class=”xml keyword”>MANAGER<code class=”xml plain”>>Queue</<code class=”xml keyword”>MANAGER<code class=”xml plain”>>
    <code class=”xml spaces”>    <code class=”xml plain”></<code class=”xml keyword”>CONSTRAINT<code class=”xml plain”>>
    <code class=”xml spaces”>    <code class=”xml plain”><<code class=”xml keyword”>SOURCE <code class=”xml color1″>ID<code class=”xml plain”>=<code class=”xml string”>”2902/Server123″<code class=”xml plain”>>TestQueue/<code class=”xml keyword”>SOURCE<code class=”xml plain”>>
    <code class=”xml spaces”>    <code class=”xml plain”><<code class=”xml keyword”>VALUE<code class=”xml plain”>>Suspended</<code class=”xml keyword”>VALUE<code class=”xml plain”>>
    <code class=”xml plain”></<code class=”xml keyword”>ROOT<code class=”xml plain”>>

    <hr />

    Die erzeugte Nachricht enthält also im dem “SOURCE”-Element ein Attribut mit der ID, sowie als Inhalt den Namen der Datenquelle. Anschließend läuft die Nachricht dieses Typs über das Routing in einen Prozess. In diesem soll ausgehend von dieser Nachricht die Projektzuordnung der Datenquelle ermittelt werden (in diesem Fall der angehaltenen Queue).
    In einem Plugin-Adapter habe ich bereits versucht das umzusetzen, bin mir aber unsicher, ob ich auf dem richtigen Weg bin. Es gibt scheinbar im com.sqlgmbh.tc.monitoring.container package Klassen, die diese Datenquellen abbilden (z.B. “QueueMon”). Diese erben alle von der abstrakten Klasse RuntimeEvent, die eine “loadObject” Methode bereitstellt. Der Plan war mithilfe der ID aus der Eingangsnachricht und dieser Methode das entsprechende Datenquellen-Objekt zu ermitteln. Unklar ist aber weiterhin, wie daraus dann die Projektzuordnung ermittelt wird und ob die verfügbaren APIs dafür überhaupt Funktionalitäten bereitstellen.
    Es wäre super, wenn für diese Problematik eine Aussage getroffen werden könnte, ob ich das über die API lösen kann und wenn ja, ein Code Snippet mit dem groben Ablauf bereitgestellt werden könnte.
    Vielen Dank!

    0
    0
Ansicht von 1 Antwort (von insgesamt 1)
  • Replies
    Torsten Uhr
    Administrator
    Alle Einstellungen von Repository-Artefakten werden im Repository als Container gespeichert. Über das TRANSCONNECT-Kommunikationssystem haben Sie Zugriff auf alle Server-Funktionen, die auch im Manager verfügbar sind. Der Zugriff auf die jeweilige Komponente erfolgt über Ports.

    import com.sqlag.tc.intercom.CommunicationBus;
    import com.sqlag.tc.repository.RepositoryPort;
    import com.sqlag.tc.repository.container.Container;
    import com.sqlag.tc.repository.container.Reference;
    import com.sqlag.tc.repository.container.project.ProjectConfig;
    ...
    
    Reference      id        = new Reference( 12345L /* ID aus der Eingangsnachricht */ );
    RepositoryPort port      = CommunicationBus.getLocal().getPort( RepositoryPort.class );
    Container      container = port.get( id.get() );
    Set<Long>      refs      = container.getReferences();
    List<Long>     projects  = port.get( ProjectConfig.class );
    
    for( Iterator<Container> it = port.get( projects ); it.hasNext(); )
    {
       ProjectConfig p = (ProjectConfig) it.next();
       if( p.elements.contains( id ) )
       {
          // TODO:
          // p.name
          // p.description
       }
    }

    Ihr TRANSCONNECT-Team

    0
    0
Ansicht von 1 Antwort (von insgesamt 1)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.