Frage

Ich las diesen Artikel

Und verstand immer noch nicht die Vorstellung, wie Themen arbeiten in MQ. In JMS weiß ich, dass Sie eine Nachricht auf einem Thema veröffentlichen können, und um eine Nachricht von ihm zu erhalten, müssen Sie zuerst, um es zu zeichnen (mit dem subskriptionsname in der Phase erhalten).

Wie es Arbeit in MQ ist? Ich möchte ein einfaches Szenario (wie in JMS) schreiben:

  • 1 zu einem Thema veröffentlichen
  • 2. Empfangen von einem Thema - das wird nicht (ich bin noch nicht abonniert)
  • 3. Abonnieren
  • 4. Receive - nichts zu erhalten, da ich nach dem abonnierte veröffentlichen
  • 5. Veröffentlichen
  • 6. Empfangen - erfolgreich

    Ein Beispielcode (.NET) wäre hilfreich,

    Guy

  • War es hilfreich?

    Lösung

    Haben Sie bei dem aufgenommenen Beispielcode ausgesehen hat? Bei einer Standardinstallation befindet sich bei:
    C:\Program Files\IBM\WebSphere MQ\tools\dotnet\samples

    Das MQPubSubSample.cs Programm zeigt sowohl langlebig und nicht-dauerhafte Abonnements für verwaltete und nicht verwaltete Code. In jedem Fall ist es zunächst abonniert, veröffentlicht dann aber Sie können es einfach auf Ihren Anwendungsfall ändern von Publish / Subscribe / receive / publish / erhalten, wie in der Frage beschrieben. (Sie werden nicht in der Lage sein, von einem Thema zu erhalten, auf die Sie noch nicht abonniert haben, though.)

    Hier ist einer der Abschnitte aus dem Beispielcode:

      // Managed/nondurable
      string topicName = DEFAULT_TOPIC_STRING;
      string topicObject = null;
      int openOptionsForGet = MQC.MQSO_CREATE | MQC.MQSO_FAIL_IF_QUIESCING | MQC.MQSO_MANAGED | MQC.MQSO_NON_DURABLE;
      int destType = MQC.MQOT_TOPIC;
    
      try
      { 
        destForGet = mqQMgr.AccessTopic(topicName, topicObject, MQC.MQTOPIC_OPEN_AS_SUBSCRIPTION, openOptionsForGet);
    
        messageForPut = new MQMessage();
        messageForPut.WriteString(DEFAULT_MESSAGE_DATA);
    
        mqQMgr.Put(destType, topicObject, null, topicName, messageForPut);
    
        messageForGet = new MQMessage();
    
        destForGet.Get(messageForGet);
    
        string messageDataFromGet = messageForGet.ReadLine();
    
        if(!DEFAULT_MESSAGE_DATA.Equals(messageDataFromGet))
          Console.WriteLine("Incorrect Message Received.");
    
        destForGet.Close();
      }
      catch(MQException mqE)
      {
        Console.WriteLine("MQException caught. " + mqE.ToString());
      }
    

    Ihre Frage Referenzen JMS als Beispiel. Bitte beachten Sie, dass Sie die Möglichkeit, mit Hilfe von IBM XMS haben - Extensible Message Service Client für .NET. XMS implementiert die JMS-API über .Net mit WMQ, WMB oder wurde als Transport, so dass Sie JMS-Code mit sehr wenig Änderung verwenden können. Die Message Service Client für .Net 2.0.0 Handbuch beschreibt das Angebot :


    Message Service Client für .NET
    Message Service Client für .NET stellt eine Application Programming Interface (API) genannt XMS, die den gleichen Satz von Schnittstellen wie Java Message Service (JMS) API hat. Message Service Client für .NET enthält eine vollständig verwaltete Implementierung von XMS, die von jeder .NET-kompatible Sprache verwendet werden kann. XMS unterstützt:

    • Punkt-zu-Punkt-Stil Messaging
    • Publish / Subscribe-Stil Messaging
    • Synchrone Nachrichtenzustellung
    • Asynchrone Nachrichtenzustellung

    Eine XMS-Anwendung kann Nachrichten mit den folgenden Anwendungsarten austauschen:

    • Eine XMS Anwendung
    • Ein WebSphere MQ-JMS-Anwendung
    • Eine native WebSphere MQ-Anwendung
    • Eine JMS-Anwendung, die die WebSphere Standard-Messaging-Provider mit

    Eine XMS-Anwendung kann verbinden und nutzen die Ressourcen, eine der folgenden Messaging-Server:

    • Ein WebSphere MQ Queue Manager -. Die Anwendung in beiden Bindungen oder Client-Modus eine Verbindung herstellen können
    • A WebSphere Service Integration Bus -. Die Anwendung kann eine direkte TCP / IP-Verbindung verwenden, oder es kann HTTP über TCP / IP verwenden
    • Ein Broker von WebSphere Event Broker oder WebSphere Message Broker - Nachrichten zwischen der Anwendung transportiert werden und den Broker mit WebSphere MQ Real-Time Transport und, abhängig von der Konfiguration können Nachrichten an die Applikation geliefert werden unter Verwendung von WebSphere MQ Multicast Transport.

    Mit dem auf einem WebSphere MQ Queue Manager verbindet, eine XMS-Anwendung kann WebSphere MQ Enterprise-Transport verwenden, um mit einem Broker von WebSphere Event Broker oder WebSphere Message Broker zu kommunizieren. Alternativ kann eine XMS-Anwendung ein WebSphere MQ verwendet Publish / Subscribe-Broker.


    Wenn Sie weiter erkunden möchten, XMS der Beispielcode besteht in Unterverzeichnissen unter die nativen .Net Proben früher bezeichnet. Die Proben werden in der das XMS-Beispielanwendungen Abschnitt des Handbuchs.

    Die .NET-Unterstützung wird als von v7 in WMQ integriert. Wenn Sie die Beispiele fehlen dann WMQ-Client-Installation ist wieder Ebene oder unvollständig installiert. Die neueste Version 7.0 WMQ-Client für Windows ist zum Herunterladen als SupportPac MQC7 .

    Die XMS Unterstützung geliefert als SupportPac IA9H .

    Lizenziert unter: CC-BY-SA mit Zuschreibung
    Nicht verbunden mit StackOverflow
    scroll top