【发布时间】:2011-09-12 13:08:58
【问题描述】:
我正在尝试解决向 SWIFT 网络发送消息的应用程序的问题。该应用程序是一个 .NET 应用程序,它使用 IBM 的 amdqmdnet.dll 程序集与 WebSphere MQ 服务器进行通信。在 WebSphere MQ 服务器上,SWIFT 联盟软件正在运行。
消息从应用程序发送,但不进入 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_PROPERTY、MQC.HOST_NAME_PROPERTY 和MQC.CHANNEL_PROPERTY 属性集。
使用选项MQC.MQOO_OUTPUT 和MQC.MQOO_FAIL_IF_QUIESCING 打开队列。
使用MQC.MQFMT_STRING 格式和默认放置消息选项创建消息:
var mqMessage = new MQMessage { Format = MQC.MQFMT_STRING };
mqMessage.WriteString(swiftMessage);
var mqMessageOptions = new MQPutMessageOptions();
queue.Put(mqMessage, mqMessageOptions);
我注意到 MQC 枚举的值 CODESET_819 可能指的是 ASCII,但我不知道是否需要使用它以及如何使用它。
【问题讨论】:
标签: .net encoding ibm-mq swift-mt