Saya mencoba memperbaiki masalah pada aplikasi yang mengirimkan pesan ke jaringan SWIFT. Aplikasi ini adalah aplikasi .NET dan menggunakan rakitan amdqmdnet.dll
IBM untuk berkomunikasi dengan server WebSphere MQ. Di server WebSphere MQ, perangkat lunak SWIFT Alliance sedang berjalan.
Pesan dikirim dari aplikasi, namun tidak masuk ke jaringan SWIFT. Beberapa penyelidikan telah mengungkapkan pesan kesalahan berikut:
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)
Awal pesan yang dikirim adalah {1:F01
dan bagi saya ini sepertinya pesan tersebut dikodekan dalam UNICODE (UTF-16) tetapi perangkat lunak SWIFT mengharapkan ASCII. Perangkat lunak SWIFT melihat {.1.:.F.0.1.
.
Pertanyaan saya adalah: Bagaimana cara mengirim pesan ke antrian WebSphere MQ menggunakan pengkodean ASCII?
Koneksi memiliki properti MQC.TRANSPORT_PROPERTY
, MQC.HOST_NAME_PROPERTY
dan MQC.CHANNEL_PROPERTY
yang disetel.
Antrian dibuka menggunakan opsi MQC.MQOO_OUTPUT
dan MQC.MQOO_FAIL_IF_QUIESCING
.
Pesan dibuat menggunakan format MQC.MQFMT_STRING
dan opsi kirim pesan default:
var mqMessage = new MQMessage { Format = MQC.MQFMT_STRING };
mqMessage.WriteString(swiftMessage);
var mqMessageOptions = new MQPutMessageOptions();
queue.Put(mqMessage, mqMessageOptions);
Saya perhatikan bahwa enumerasi MQC
memiliki nilai CODESET_819
yang mungkin mengacu pada ASCII tetapi saya tidak tahu apakah saya perlu menggunakannya dan bagaimana caranya.