- Dieses Thema hat 1 Antwort und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren von Torsten Uhr.
- Post
-
- 6. November 2020 um 9:27 Uhr
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!00
Ansicht von 1 Antwort (von insgesamt 1)
- Replies
-
- 19. November 2020 um 12:04 Uhr
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
00
Ansicht von 1 Antwort (von insgesamt 1)
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.