私は今、これについてしばらくの間、ぐるぐる回っています。提供されたチャネル テーブル ファイルを使用して、分散キュー マネージャーに接続しようとしています。サーバーで環境変数 MQCHLLIB と MQCHLTAB を指定すると、これを機能させることができます。ただし、IBM のドキュメントには、.net 構成ファイルがこれらの変数をオーバーライドできると記載されています。
これが私のweb.configファイルに入れたものです:
...
<configSections>
<section name="CHANNELS" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<CHANNELS>
<add key="ChannelDefinitionDirectory" value="C:\temp"></add>
<add key="ChannelDefinitionFile" value="DSM_MOM_TEST.tab"></add>
</CHANNELS>
...
そして、実行中のコードは次のとおりです。
Hashtable properties = new Hashtable();
//Add managed connection type to parameters.
const String connectionType = MQC.TRANSPORT_MQSERIES_CLIENT;
properties.Add(MQC.TRANSPORT_PROPERTY, connectionType);
return new MQQueueManager(queueManagerName, properties);
queueManagerName は、汎用キュー マネージャ「*Q101T」に設定されます。
ただし、これは機能せず、次のエラーが返されます: 2058 MQRC_Q_MGR_NAME_ERROR
環境変数以外にこれを機能させる方法に関するドキュメントを見つけることができませんでした。標準の mqclient.ini は、web.config のチャネル スタンザによってオーバーライドされる必要があります。
コードで見逃したものはありますか? どんなヒントでも大歓迎です。
編集: connectionType を MQC.TRANSPORT_MQSERIES_MANAGED に変更しましたが、取得していたエラーを回避しています。ただし、I/O エラーが返されるようになりました。
System.IO.IOException はユーザー コードによって処理されませんでした Message="I/O エラーが発生しました。" Source="amqmdnet"
StackTrace: IBM.WMQ.MQChannelTable.CreateChannelEntryLists(MQChannelListEntry nameList) で
これはhttps://www-304.ibm.com/support/docview.wss?uid=swg1IC69174に関連している可能性が最も高いと思うので、ミドルウェア担当者がこれに該当するかどうかを確認し、できれば提供してくれるのを待っています新しい .TAB ファイルで...
Edit2 これは問題ではないようです。MQ トレースを実行しましたが、AMQCLCHL.TAB ファイルが見つからないためにエラーが発生しています。なぜまだこのファイルを探しているのかわかりません。web.config で指定されたチャネル テーブルを使用する必要があります。これらの値を取得しない理由を知っている人はいますか?