3

メッセージを SWIFT ネットワークに送信するアプリケーションの問題を修正しようとしています。このアプリケーションは .NET アプリケーションであり、IBM のamdqmdnet.dllアセンブリーを使用して WebSphere MQ サーバーと通信します。WebSphere MQ サーバー上で SWIFT Alliance ソフトウェアが実行されています。

メッセージはアプリケーションから送信されますが、SWIFT ネットワークには入りません。調査の結果、次のエラー メッセージが明らかになりました。

MQSeries Queue 'MQSWIFT/SWIFT.SENDER', Nbr 123, Session 4567, Sequence 890, Conversion error (From)
    MQ Msg Id    : AMQ MQSWIFT     <XX><XX><XX>X <X>-<XX>
    Message Info : Error in FIN block 1: can not find tag F01 in message
{.1.:.F.0.1. (rest of message removed)

送信されたメッセージの開始は、メッセージ{1:F01が UNICODE (UTF-16) でエンコードされているように見えますが、SWIFT ソフトウェアは ASCII を想定しています。SWIFT ソフトウェアは{.1.:.F.0.1..

私の質問は、ASCII エンコーディングを使用してメッセージを WebSphere MQ キューに送信するにはどうすればよいですか?

接続にはプロパティMQC.TRANSPORT_PROPERTYMQC.HOST_NAME_PROPERTYあり、MQC.CHANNEL_PROPERTY設定されています。

キューは、オプションMQC.MQOO_OUTPUTとを使用して開かれますMQC.MQOO_FAIL_IF_QUIESCING

メッセージは、フォーマットMQC.MQFMT_STRINGとデフォルトの put メッセージ オプションを使用して作成されます。

var mqMessage = new MQMessage { Format = MQC.MQFMT_STRING };
mqMessage.WriteString(swiftMessage);
var mqMessageOptions = new MQPutMessageOptions();
queue.Put(mqMessage, mqMessageOptions);

MQC列挙にはおそらくASCIIを参照する値があることに気付きましたが、CODESET_819それを使用する必要があるかどうか、およびその方法がわかりません。

4

2 に答える 2

1

私のために働いた解決策は、のCharacterSetプロパティをに設定することでしMQMessage819

var mqMessage = new MQMessage {
  Format = MQC.MQFMT_STRING,
  CharacterSet = 819
}
mqMessage.WriteString(swiftMessage);

MQMessage.Writeある大学はまた、バイト配列を受け入れるオーバーロードを使用できるはずだと私に言いました。これらの線に沿った何か:

var mqMessage = new MQMessage();
mqMessage.Write(Encoding.ASCII.GetBytes(swiftMessage));

ただし、この代替アプローチが機能することを確認していません。

于 2011-06-20T14:42:55.453 に答える
0

キューから読み取った後、SWIFT アプリは ASCII に変換されると思います。

だから、あなたがする必要があること:

ASCIIを MQ メッセージに書き込みます。

または、コードセット 819 を、データの実際のエンコーディング (UTF-16) に変更すると、コードセット 1200 になります。

于 2011-06-15T06:32:06.640 に答える