- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我正在尝试向接受最大 482 字符串的队列发送消息。我发送的字符串长度为 452。这是访问请求队列的代码块:
var openOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;
requestQueue = queueManager.AccessQueue(requestQueueName, openOptions);
var messageObject = new MQMessage();
messageObject.WriteString(message);
openReplyQueue(replyQueueName);
messageObject.ReplyToQueueName = replyQueue.Name;
messageObject.Format = MQC.MQFMT_STRING
messageObject.MessageType = MQC.MQMT_REQUEST;
messageObject.Report = MQC.MQRO_COPY_MSG_ID_TO_CORREL_ID;
messageObject.Expiry = 300;
var pmo = new MQPutMessageOptions();
pmo.Options = MQC.MQPMO_FAIL_IF_QUIESCING;
requestQueue.Put(messageObject, pmo);
代码在最后一行失败,MQException 原因代码为 2030。通过一些控制台输出,我发现 MQMessage 对象中的消息长度为 904,恰好是我尝试发送的字符串长度的两倍长于队列的最大消息长度。
如何防止此缓冲区发生并确保消息长度保持在 452?
最佳答案
用于 .NET 的 IBM MQ 类默认使用 CCSID 1200 (UTF-16),这是一个双字节字符集 (DBCS)。因为每个字符都表示为两个字节,所以您的 452 字符串表示为 904 字节。
如果从队列中获取消息的应用程序需要 452 个字符并且正在使用 Get with Convert 选项,则该消息将被应用程序正确读取。如果读取应用程序使用 ASCII 字符集,则应用程序会将其转换为 452 字节并读取。如果获取应用程序正在读取 CCSID 1200 或另一个 DBCS,这也会起作用,因为应用程序需要 452 个字符,即使在 DBCS 中它仍然会获取 452 个字符。如果这是您获取应用程序的工作方式,那么一种选择是增加队列的 MAXMSGL 以容纳在 DBCS 中编码的消息。
另一种选择是告诉您的放置应用程序将消息放入 ASCII 字符集中,例如 CCSID 437。
要将 CCSID 设置为 437,请使用以下命令:
messageObject.CharacterSet = 437;
关于c# - Websphere MQ & .NET - WriteString() 属性使消息太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45594068/
在我们的服务出现一些预期的增长之后,突然间一些更新花费了非常长的时间,这些过去非常快,直到表达到大约 2MM 记录,现在它们每个需要大约 40-60 秒。 update table1 set fiel
我在服务中实现了一个传感器事件监听器,只要采样周期和最大报告延迟低于 1 秒,该监听器就可以正常工作,但一旦我将采样周期增加到超过 1 秒,传感器就根本不会更新。 我希望采样周期为 10 秒(可能是
我使用 Tkinter GUI 来启动测量和分析过程,基本上只需单击一个按钮即可开始。由于这些测量可能需要一段时间,我尝试添加一个进度条,即这个: http://tkinter.unpythonic.
我正在尝试使用套接字发送数据包,但出现错误。 invalid conversion from ‘omnetpp::cPacket*’ to ‘inet::Packet*’ [-fpermissive]
我刚刚发现 String#split 有以下奇怪的行为: "a\tb c\nd".split => ["a", "b", "c", "d"] "a\tb c\nd".split(' ') => ["a
您好,我正在尝试 ClojureScript,我正在使用 Klipse作为我的 REPL 差不多。这可能不是它的预期用途,但因为我没有做任何太复杂的事情,所以现在没问题。 我遇到的一个问题是尝试设置计
根据下面的数据,ClockKit 会生成一次 future 的 CLKComplicationTimelineEntry 项,但对于过去的时间点,会进行 24 次调用!这是为什么? 更多详情: 我注意
我有一个 MySQL 表,这个表有一个名为 datetime_utc 的 DATETIME 列。如您所料,它是 UTC 日期和时间。在我的 Bookshelf 模型中,我定义了一个虚拟 getter,
大家好,我是二哥呀! 昨天,一位球友问我能不能给他解释一下 @SpringBootApplication 注解是什么意思,还有 Spring Boot 的运行原理,于是我就带着他扒拉了一下这个注解的源
我是一名优秀的程序员,十分优秀!