Ich bin brandneu bei WebSphere MQ. Ich verwende die .NET-Klassen von IBM (IBM.WMQ), um eine Anforderungsnachricht zu erstellen und dann eine Antwortnachricht zu erhalten. Das MQMessage-Objekt verfügt über eine Anzahl von Writexxx-Methoden für verschiedene Datentypen. Ich muss eine Vielzahl verschiedener Datenelemente in die Anforderungsnachricht schreiben. Meine Frage ist, sollte ich die entsprechende Write-Methode für jedes einzelne Datenelement aufrufen, oder soll ich die ganze Sache mit einem StringBuilder erstellen und dann die MQMessage WriteString-Methode einmal aufrufen?So schreiben Sie in MQMessage: mehrere Schreibaufrufe oder StringBuilder?
Antwort
Die Schreib-APIs sollen versuchen, Ihnen helfen, klareren Code zu schreiben, aber wer auch immer die WMQ-API zu .Net konvertiert ist ein Idiot.
Sie schrieben 20 verschiedene APIs anstelle einer "write" -Funktion mit Überladungen. Der Schreibaufruf hat einige brauchbare Überladungen.
Sie erstellten eine enum, die 100, wenn nicht Tausende von Optionen namens MQC (MQ-Konstanten) hat. Viel Spaß, aber hüte dich vor Transaktionen auf WMQ, da es einen kleinen Aufwand bei der Nutzung dieser Funktionalität gibt.
Jetzt, da ich fertig mit meinem Schimpfwort bin, hüte dich vor den APIs, dass die meisten Apis eine Beschränkung auf einen signed int in Bezug auf die Größe haben, nur die write (byte [] -Array) und die writeString (string s) Funktion nehmen Sie eine große Nachricht. Auch die .net API schreibt alle Zeichenfolgen UTF-16 gemäß der .net-Implementierung, die Sie betreffen kann.
- 1. StringBuilder in Stream schreiben
- 2. Schreiben Sie einen StringBuilder in einen Writer ohne toString()
- 3. So schreiben Sie Zusammenfassungen für mehrere Läufe in Tensorflow
- 4. So schreiben Sie in Standardausgabe mit BufferedWriter
- 5. StringBuilder in Flex
- 6. So schreiben Sie in Fehlerprotokolldatei in PHP
- 7. C# Excel Schreiben Sie in mehrere Zellen
- 8. So erkennen Sie falsches Schreiben
- 9. C# oder Java: Zeichenfolgen mit StringBuilder vorgeben?
- 10. So schreiben Sie Strings in Binärdatei
- 11. So schreiben Sie dieses Layout in XML
- 12. So schreiben Sie optionale Parameter in $ .getJSON
- 13. StringBuilder in SQLiteDatabase speichern
- 14. So behandeln Sie mehrere Delegierte
- 15. So automatisieren Sie mehrere Piezoaktoren
- 16. Stringbuilder in CIL (MSIL)
- 17. Wann sollten Sie explizit einen StringBuilder verwenden?
- 18. So entfernen Sie mehrere Metazeichen mit awk oder sed
- 19. Regex Ersetzungen in einem StringBuilder
- 20. So suchen Sie mehrere Projekte in GitLab
- 21. So schreiben Sie: Hover mit Inline-Stil?
- 22. So prüfen Sie mehrere auswählen, ob ausgewählt oder nicht?
- 23. So kombinieren Sie mehrere Return-Funktionen (JavaScript)
- 24. Wie lesen und schreiben Sie mehrere Dateien?
- 25. So schreiben Sie eine virtuelle Maschine
- 26. So zentrieren Sie mehrere Elemente in UIView
- 27. Ein StringBuilder Objekt entsorgen
- 28. So schreiben Sie effizient Code auf Papier
- 29. So verketten Sie mehrere Dialoge?
- 30. mehrere Threads, die auf std :: cout oder std :: cerr schreiben
Danke für die Antwort (Ich begann mich zu fragen, ob ich der einzige war, der dieses Zeug benutzte). Was würden Sie tun, wenn Sie eine lange Nachricht schreiben müssten, mehrere "write" -Methodenaufrufe haben oder Ihre Zeichenfolge erstellen und einen einzigen WriteString-Aufruf ausführen würden? Oder ist es besser, das Byte-Array zu schreiben? –
Hängt von Ihrem Nachrichteninhalt ab. WMQ-Leistung bläst jedoch für große Nachrichten. Wie ich schon sagte, ist das Schreiben von String vs Byte durch .net-Zeichenfolgen in UTF-16 beeinflusst, was Sie beeinflussen kann, wenn Ihre Nachricht groß ist. Eine Website mit Websphere MQ-Leistung. http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg27007197 – Spence