要求是从IBM MQ中的传入消息中删除回车符。
我们的应用程序期望响应消息中的字符长度为1579,但它的结尾为1581,“CRLF”结束
执行以下命令时
/ opt / mqm / samp / bin / amqsbcg TXN_RCV_FRM_SYS TXNSYS850.QM
长度 - 1581个1581字节
当使用/ opt / mqm / samp / bin / amqsput TXN_RCV_FRM_SYS TXNSYS850.QM删除“CRLF”时发出相同的响应消息,应用程序能够从QM中选择消息
请指导我从队列或QM级别删除这些字符的任何配置设置
2018年3月28日问题解决: - )
MQGMO_CONVERT
将上面的值设置为true ...
此选项将消息中的应用程序数据转换为符合MQGET调用上MsgDesc参数中指定的CodedCharSetId和Encoding值。数据在复制到Buffer参数之前进行转换。
转发过程假定在放置消息时指定的格式字段,以标识消息中数据的性质。消息数据由队列管理器转换为内置格式,并由用户编写的其他格式的出口转换。有关数据转换出口的详细信息,请参阅数据转换。
如果转换成功,则MsgDesc参数中指定的CodedCharSetId和Encoding字段在从MQGET调用返回时保持不变。
如果仅转换失败,则返回未转换的消息数据。将MsgDesc中的CodedCharSetId和Encoding字段设置为未转换消息的值。在这种情况下,完成代码是MQCC_WARNING。
在任何一种情况下,这些字段都描述了Buffer参数中返回的消息数据的字符集标识符和编码。
请参阅MQMD - 消息描述符中描述的格式字段,以获取队列管理器为其执行转换的格式名称列表。
CCSD amqsbcg工作和不工作的详细信息
不工作
编码:273 CodedCharSetId:1208
工作
编码:546 CodedCharSetId:1208
答案 0 :(得分:0)
没有QUEUE或QM级别设置可以完成从消息末尾删除CRLF。
您拥有的选项是:
与编码相关的更新
附加到IBM Technote" Data Conversion under WebSphere MQ"详细介绍了编码和CCSID影响转换的方法。
<强>编码
编码通常用于表示此平台使用的方法 表示数字数据。有两种一般类型:
- 'LittleEndian',由英特尔处理器使用(例如Windows,Linux on Intel)。在此编码中,最低有效数字显示在较低位 记忆位置,例如数字437将以十六进制表示为 X'BF01’ 。
- “大尾端”。最重要的数字位于较低的内存位置。例如数字437将以十六进制表示为 X'01BF”。
关于您的工作和非工作信息:
编码273对应于Unix(非Intel)操作系统,例如AIX或Solaris Spark,这被称为Big Endian。
编码546对应于英特尔的Linux和Windows操作系统,这被称为Little Endian。
在这两种情况下,您都有CCSID 1208,它对应于UTF-8,它是一个可变字节字符集,每个字符可以有一到四个字节。
我不确定为什么编码会影响您处理邮件正文的能力。您能否提供发送和接收应用程序的MQ队列管理器版本的详细信息以及发送和接收应用程序的IBM MQ jar文件版本?