MQ .NETにあるレベルのPCFサポートがありますが、文書化されていません。次に、キュー・マネージャーにキュー名を表示するためのサンプル・コードを示します。
using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IBM.WMQ;
using IBM.WMQ.PCF;
namespace PCFNET
{
class Program
{
static void Main(string[] args)
{
InquireQueue();
}
/// <summary>
/// Display list of queue names and queue depth for each queue
/// </summary>
public static void InquireQueue()
{
PCFMessageAgent messageAgent = null;
try
{
// Create bindings connection to queue manager
messageAgent = new PCFMessageAgent("DEMOQMGR");
// Build Inquire command to query queue name
PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q);
reqeuestMessage.AddParameter(MQC.MQCA_Q_NAME, "*");
// Send request and receive response
PCFMessage[] pcfResponse = messageAgent.Send(reqeuestMessage);
// Process and print response.
int pcfResponseLen = pcfResponse.Length;
for (int pcfResponseIdx = 0; pcfResponseIdx < pcfResponseLen; pcfResponseIdx++)
{
try
{
String qName = pcfResponse[pcfResponseIdx].GetStringParameterValue(MQC.MQCA_Q_NAME);
int qDepth = pcfResponse[pcfResponseIdx].GetIntParameterValue(MQC.MQIA_CURRENT_Q_DEPTH);
Console.WriteLine("QName: " + qName + " Depth: " + qDepth);
}
catch (PCFException pcfex)
{
//Ignore exception and get the next response
}
}
}
catch (PCFException pcfEx)
{
Console.Write(pcfEx);
}
catch (MQException ex)
{
Console.Write(ex);
}
catch (Exception ex)
{
Console.Write(ex);
}
finally
{
if (messageAgent != null)
messageAgent.Disconnect();
}
}
}
}
InquireQueue()メソッドを呼び出したとき、私はQueueNameException(2058)エラーを取得します。アクティブなセッション(他のキューへの)が確立され、MqQueueManagerオブジェクトが有効な接続データで作成された直後に、これを実行しようとしました。私はブースのケースで同じエラーが発生します。例外がスローされました:InquireQueue()metodを呼び出すとき、Amqmdnet.dll、CompCode:2、理由:2058で 'IBM.WMQ.MQException'。私は接続が確立しているので、私はMQへの権利が正しいことを知っています。 QueueManagerの名前がMQQueueManagerのInquireQueue()メソッドに含まれているのがわかりません。 –
あなたの例でこれを忘れましたか? –
この例は、名前がPCFMessageAgentクラスのコンストラクターに渡されているのを見ると、ローカルキューマネージャDEMOQMGRに接続します。理由コード2058は、キュー・マネージャー名のエラーを意味します。ローカル・キュー・マネージャーまたはリモート・キュー・マネージャーに接続していますか。リモート・キュー・マネージャーの場合は、チャネル名、ホスト名、および詩番号を入力して、クライアント接続でMQQueueManagerクラスのインスタンスを作成する必要があります。 – Shashi