Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » QAnywhere » QAnywhere-Nachrichtenspeicher » Lokale Nachrichtenspeicher

 

Den lokalen Nachrichtenspeicher einrichten

Der lokale Nachrichtenspeicher erfordert die Installation von QAnywhere. QAnywhere befindet sich im SQL Anywhere-Installationsprogramm unter der Funktion "Synchronisation und Messaging". Um das Messaging in Ihrer SQL Anywhere-Datenbank zu aktivieren, müssen Sie das QAnywhere-Schema in Ihrer SQL Anywhere-Datenbank installieren, damit sie als lokaler Nachrichtenspeicher verwendet werden kann. Für diesen Zweck wird die Option -sil des QAnywhere Agent für SQL Anywhere verwendet. Die Option -sil weist den Agenten an, die Datenbank als lokalen Nachrichtenspeicher zu initialisieren. Der Agent wird einfach zur Initialisierung eines lokalen Nachrichtenspeichers verwendet und nicht weiter benötigt. Alle in der Datenbank erstellten QAnywhere-Objekte gehören zum Eigentümer ml_qa_message_group. Sobald Ihre SQL Anywhere-Datenbank als lokaler Nachrichtenspeicher initialisiert wurde, können Anwendungen die QAnywhere-Client-API zum Austauschen von Nachrichten verwenden.

 ♦  So erstellen Sie einen lokalen Nachrichtenspeicher (.NET-Beispiel)
  1. Erstellen Sie eine SQL Anywhere-Datenbank. Sie können diesen Schritt auslassen, wenn Sie vorhaben, eine vorhandene SQL Anywhere-Datenbank zu verwenden.

    dbinit localmsgstore.db
  2. Installieren Sie das QAnywhere-Schema in der SQL Anywhere-Datenbank, damit sie als lokaler Nachrichten-Bus verwendet werden kann:

    qaagent -sil -c "dbf=localmsgstore.db;uid=dba;pwd=sql"
  3. Erstellen Sie eine Absender-Anwendung, um Nachrichten im Nachrichtenspeicher abzulegen. Hinweise zur Arbeit mit der .NET-Version der QAnywhere-Client-API finden Sie unter QAnywhere-.NET-API-Referenz für Clients.



    using System;
    using System.IO;
    using iAnywhere.QAnywhere.Client;
    namespace sender
    {
    class sender
        {
            public static void Main() {
                try {
                    // QAnywhere initialization
                    QAManager mgr = QAManagerFactory.Instance.CreateQAManager();
                    // Be sure to set the DATABASE_TYPE property
                    mgr.SetProperty( "DATABASE_TYPE", "sqlanywhere" );
                    mgr.SetProperty( "CONNECT_PARAMS", "dbf=localmsgstore.db;uid=dba;pwd=sql" );
                    mgr.Open( AcknowledgementMode.IMPLICIT_ACKNOWLEDGEMENT );
                    mgr.Start();
                    // Create a text message
                    QATextMessage msg = mgr.CreateTextMessage();
                    msg.Text = "Sample text";
                    // Queue the message
                    mgr.PutMessage( "dbqueue", msg );
                    // QAnywhere finalization
                    mgr.Stop();
                    mgr.Close();
                    } catch( Exception exc ) {
                    Console.WriteLine( exc.Message );
                }
            }
        }
    }
  4. Kompilieren Sie das Programm, indem Sie Folgendes in der Befehlszeile eingeben. Sie müssen Visual Studio auf Ihrem Computer installiert haben.

    csc /reference:"%SQLANY12%\Assembly\v2\iAnywhere.QAnywhere.Client.dll" sender.cs
  5. Erstellen Sie eine Empfänger-Anwendung, um Nachrichten aus dem Nachrichtenspeicher abzurufen. Hinweise zur Arbeit mit der .NET-Version der QAnywhere-Client-API finden Sie unter QAnywhere-.NET-API-Referenz für Clients.



    using System;
    using System.IO;
    using iAnywhere.QAnywhere.Client;
    namespace receiver
    {
    class receiver
    {
    public static void Main() {
    try {
    // QAnywhere initialization
    QAManager mgr = QAManagerFactory.Instance.CreateQAManager();
    // Be sure to set the DATABASE_TYPE property
    mgr.SetProperty( "DATABASE_TYPE", "sqlanywhere" );
    mgr.SetProperty( "CONNECT_PARAMS", "dbf=localmsgstore.db;uid=dba;pwd=sql" );
    mgr.Open( AcknowledgementMode.IMPLICIT_ACKNOWLEDGEMENT );
    mgr.Start();
    // Get the message
    QATextMessage msg = (QATextMessage)mgr.GetMessage( "dbqueue" );
    // Display the text
    Console.WriteLine( msg.Text );
    // QAnywhere finalization
    mgr.Stop();
    mgr.Close();
    } catch( Exception exc ) {
    Console.WriteLine( exc.Message );
    }
    }
    }
    }
  6. Kompilieren Sie das Programm, indem Sie Folgendes in der Befehlszeile eingeben. Sie müssen Visual Studio auf Ihrem Computer installiert haben.

    csc /reference:"%SQLANY12%\Assembly\v2\iAnywhere.QAnywhere.Client.dll" receiver.cs
  7. Starten Sie die SQL Anywhere-Datenbank:

    dbsrv12 localmsgstore.db
  8. Führen Sie die Absender-Anwendung aus.

    sender
  9. Führen Sie die Empfänger-Anwendung aus.

    receiver

    Die Zeichenfolge "Sample Text" wird angezeigt.

 ♦  So erstellen Sie einen lokalen Nachrichtenspeicher (Java-Beispiel)
  1. Erstellen Sie eine SQL Anywhere-Datenbank. Sie können diesen Schritt auslassen, wenn Sie vorhaben, eine vorhandene SQL Anywhere-Datenbank zu verwenden.

    dbinit localmsgstore.db
  2. Installieren Sie das QAnywhere-Schema in der SQL Anywhere-Datenbank, damit sie als Nachrichten-Bus verwendet werden kann:

    qaagent -sil -c "dbf=localmsgstore.db;uid=dba;pwd=sql"
  3. Erstellen Sie eine Absender-Anwendung, um Nachrichten im Nachrichtenspeicher abzulegen. Hinweise zur Arbeit mit der .NET-Version der QAnywhere-Client-API finden Sie unter QAnywhere-Java-API-Referenz für Clients.



    import java.util.*;
    import ianywhere.qanywhere.client.*;
    public class sender
    {
    public static void main( Strings [] args ) {
    try {
    // QAnywhere initialization
    QAManager mgr = QAManagerFactory.getInstance().createQAManager();
    // Be sure to specify the DATABASE_TYPE
    mgr.setProperty( "DATABASE_TYPE", "sqlanywhere" );
    mgr.setProperty( "CONNECT_PARAMS", "dbf=localmsgstore.db;uid=dba;pwd=sql" );
    mgr.open( AcknowledgementMode.IMPLICIT_ACKNOWLEDGEMENT );
    mgr.start();
    // Create a text message
    QATextMessage msg = mgr.createTextMessage();
    msg.setText( "Sample text" );
    // Queue the message
    mgr.putMessage( "dbqueue", msg );
    // QAnywhere finalization
    mgr.stop();
    mgr.close();
    } catch( Exception exc ) {
    System.out.println( exc.getMessage() );
    }
    }
    }
  4. Kompilieren Sie das Programm, indem Sie Folgendes in der Befehlszeile eingeben. Sie müssen das Java JDK auf Ihrem Computer installiert haben.

    javac  -cp "%SQLANY12%\java\qaclient.jar" sender.java
  5. Erstellen Sie eine Empfänger-Anwendung, um Nachrichten aus dem Nachrichtenspeicher abzurufen. Hinweise zur Arbeit mit der Java-Version der QAnywhere-Client-API finden Sie unter QAnywhere-Java-API-Referenz für Clients.



    import java.util.*;
    import ianywhere.qanywhere.client.*;
    public class receiver
    {
    public static void main( Strings [] args ) {
    try {
    // QAnywhere initialization
    QAManager mgr = QAManagerFactory.getInstance().createQAManager();
    // Be sure to set the DATABASE_TYPE property.
    mgr.setProperty( "DATABASE_TYPE", "sqlanywhere" );
    mgr.setProperty( "CONNECT_PARAMS", "dbf=localmsgstore.db;uid=dba;pwd=sql" );
    mgr.open( AcknowledgementMode.IMPLICIT_ACKNOWLEDGEMENT );
    mgr.start();
    // Get the message
    QATextMessage msg = (QATextMessage)mgr.getMessage( "dbqueue" );
    // Display the text
    System.out.println( msg.getText() );
    // QAnywhere finalization
    mgr.stop();
    mgr.close();
    } catch( Exception exc ) {
    System.out.println( exc.getMessage() );
    }
    }
    }
  6. Kompilieren Sie das Programm, indem Sie Folgendes in der Befehlszeile eingeben. Sie müssen das Java JDK auf Ihrem Computer installiert haben.

    javac -cp "%SQLANY12%\java\qaclient.jar" receiver.java
  7. Starten Sie die SQL Anywhere-Datenbank:

    dbsrv12 localmsgstore.db
  8. Führen Sie die Absender-Anwendung aus.

    java -cp ".\;%SQLANY12%\java\qaclient.jar;%SQLANY12%\java\jodbc.jar" sender
  9. Führen Sie die Empfänger-Anwendung aus.

    java -cp ".\;%SQLANY12%\java\qaclient.jar;%SQLANY12%\java\jodbc.jar" receiver

    Die Zeichenfolge "Sample Text" wird angezeigt.

Den Nachrichtenspeicher bereinigen   Standardmäßig bleiben Nachrichten, die einen endgültigen Status erreicht haben, im Nachrichtenspeicher. Mit zunehmender Verwendungsdauer werden Nachrichten angehäuft und damit wächst Ihre Datenbank. Während der Initialisierung der Datenbank für die Verwendung als Nachrichten-Bus wurde eine gespeicherte Prozedur namens ml_qa_clearreceivedmessages erstellt. Diese gespeicherte Prozedur löscht Nachrichten, die einen endgültigen Status erreicht haben, aus dem Nachrichtenspeicher. Eine praktische Möglichkeit, der Ansammlung von Nachrichten in Ihrer Datenbank Herr zu werden, besteht darin, ein Datenbankereignis zu erstellen, das, wenn es ausgelöst wird, die gespeicherte Prozedur ml_qa_clearreceivedmesssages aufruft. Das folgende Datenbankereignis bewirkt beispielsweise, dass Nachrichten im endgültigen Status jeden Tag um Mitternacht gelöscht werden:

CREATE EVENT message_cleanup
SCHEDULE
START TIME '12:00AM' EVERY 24 HOURS
HANDLER begin call ml_qa_message_group.ml_qa_clearreceivedmessages() end

Nachrichten anzeigen   Verwenden Sie Sybase Central, um Nachrichten in Ihrer SQL Anywhere-Datenbank anzuzeigen. Dazu wird unter Verwendung des QAnywhere-Plug-Ins eine Verbindung zu einem Clientspeicher hergestellt.