Verwendung von Queues in Eigentschaften (Parametern) von Aufgaben

  • Post
    JanS
    Teilnehmer
    Hallo Zusammen,

    ich würde gerne eine eigene Aufgabe erstellen, bei der ich nicht nur einen Adapter als Parameter angeben kann, sondern auch eine Queue.

    Wie müsste das PropertyMetaData-Objekt angelegt sein, um dem Benutzer die Möglichkeit zu geben eine Queue auszuwählen?

    mfg, Jan Schrader

    0
    0
Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Replies
    Torsten Uhr
    Administrator
    Leider ist es nicht möglich, eine Queue als Parameter anzugeben. Sie können nur den Namen einer Queue als Zeichenkette eingeben lassen, und die Queue dann über diesen Namen ermitteln. Nutzen Sie dazu die Port-Klassen wie im Beispiel.

    import com.sqlgmbh.tc.message.MessagePort;
    import com.sqlgmbh.tc.processing.QueueManagerPort;
    ...
    QueueManagerPort qPort = CommunicationBus.getLocal().getPort( QueueManagerPort.class );
    MessagePort    msgPort = CommunicationBus.getLocal().getPort( MessagePort.class );
    
    ContainerList<QueueConfig> configurations = qPort.getQueueConfigs();
    QueueConfig qc;
    for( QueueConfig config : configurations )
    {
       if( config.name.equals( "queuename" )
       {
          qc = config;
          break;
       }
    }
    try( CloseableIterator<QueueEntryComposite> it = msgPort.browse( qc.getID(), 100 /* limit */, true /* ascending */ ) )
    {
       QueueEntryComposite entry = it.next();
    }

     

    Ihr TRANSCONNECT-Team

    0
    0
    JanS
    Teilnehmer
    Hallo Herr Uhr,

    vielen Dank für die Information. Wäre es möglich über einen Validator sicherzustellen, dass der Benutzer nur Namen von tatsächlich existierenden Queues angibt? Oder kann man in der Aufgabe die Aufgabe selbst anhalten, falls der benutzer einen ungültigen Queue-Namen angegeben hat? Ich möchte dem Nutzer in irgendeiner offensichtlichen Weise Feedback geben können, dass er die Queue korrekt angegeben hat.

    mfg, Jan Schrader

    0
    0
    Torsten Uhr
    Administrator
    Die Prüfung eines eingegebenen Queue-Namens ist nicht direkt bei der Eingabe möglich. Außerdem kann eine Queue jederzeit auch nach der Eingabe des Namens in der Aufgabe umbenannt werden.

    Die beste Möglichkeit wäre es in diesem Fall, dass die Aufgabe beim Start prüft, ob es eine Queue mit dem betreffenden Namen gibt. Falls das nicht der Fall sein sollte, würde ich nach einer entsprechenden Logausgabe die Aufgabe mit einer ProcessException abbrechen. Der Anwender bekommt dann visuell und falls konfiguriert, auch per Monitoring, ein Feedback.

    Ihr TRANSCONNECT-Team

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