Я пытаюсь решить проблему с приложением, которое отправляет сообщение в сеть 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.
.
. Мой вопрос: как отправить сообщение в очередь WebSphere MQ с использованием кодировки ASCII?
Соединение имеет свойства MQC.TRANSPORT_PROPERTY
, MQC.HOST_NAME_PROPERTY
и MQC.CHANNEL_PROPERTY
set.
Очередь открывается с использованием опций 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
имеет значение CODESET_819
, которое, вероятно, относится к ASCII, но я понятия не имею, нужно ли мне его использовать и как.