![](/img/trans.png)
[英]IBM Websphere MQ - MQGET does not remove the message from the queue
[英]Remove carriage return from an incoming message in IBM MQ
要求是从IBM MQ中的传入消息中除去回车。
我们的应用程序期望响应消息中的字符长度为1579,但其结尾为1581,并带有“ CRLF”
当执行以下命令时
/ opt / mqm / samp / bin / amqsbcg TXN_RCV_FRM_SYS TXNSYS850.QM
长度-1581的1581字节
通过使用/ opt / mqm / samp / bin / amqsput删除“ CRLF”放置相同的响应消息TXN_RCV_FRM_SYS TXNSYS850.QM时,应用程序能够从QM中选择消息
请指导我进行任何配置设置,以从队列或QM级别删除这些字符
2018年3月28日问题已解决:-)
MQGMO_CONVERT
将上述值设置为true ...
此选项将消息中的应用程序数据转换为与MQGET调用的MsgDesc参数中指定的CodedCharSetId和Encoding值一致。 在将数据复制到Buffer参数之前,先对其进行转换。 转换过程将假定放置消息时指定的格式字段,以标识消息中数据的性质。 消息数据由队列管理器转换为内置格式,并由用户编写的出口转换为其他格式。 有关数据转换出口的详细信息,请参见数据转换。 如果转换成功,则从MQGET调用返回时,在MsgDesc参数中指定的CodedCharSetId和Encoding字段将保持不变。 如果仅转换失败,则返回未转换的消息数据。MsgDesc中的CodedCharSetId和Encoding字段设置为未转换的消息的值。 在这种情况下,完成代码为MQCC_WARNING。 无论哪种情况,这些字段都描述了字符集标识符和在Buffer参数中返回的消息数据的编码。 有关队列管理器为其执行转换的格式名称的列表,请参见MQMD-消息描述符中描述的格式字段。
CCSD在amqsbcg中工作和不工作的详细信息
不工作
编码:273 CodedCharSetId:1208
工作中
编码:546 CodedCharSetId:1208
没有可以完成从消息末尾删除CRLF的QUEUE或QM级别设置。
您有以下选项:
与编码有关的更新
随附于IBM技术说明“ WebSphere MQ下的数据转换 ”的PDF详细讨论了编码和CCSID如何影响转换。
编码方式
编码通常是指该平台用来表示数字数据的方法。 一般有两种类型:
- “ LittleEndian”,由Intel处理器使用(例如Windows,Intel上的Linux)。 在这种编码中,最低有效位出现在较低的存储位置,例如,数字437(用十六进制表示)表示为X'BF01'。
- “ BigEndian”。 最重要的数字在较低的内存位置。 例如,数字437将以十六进制表示为X'01BF'。
关于您的工作和非工作消息:
编码273对应于Unix(非Intel)操作系统,例如AIX或Solaris Spark,它被称为Big Endian。
编码546对应于Intel上的Linux和Windows操作系统,这被称为Little Endian。
在这两种情况下,您都有对应于UTF-8的CCSID 1208,它是一个可变字节字符集,每个字符可以具有一到四个字节。
我不确定为什么编码会影响您处理消息正文的能力。 您可以提供发送和接收应用程序的MQ队列管理器版本的详细信息,以及发送和接收应用程序的IBM MQ jar文件版本吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.