- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
.NET 和 Java API for WebSphere MQ 中的
MQQueue
类包含三个相似的方法:
PutForwardMessage
PutReplyMessage
PutReportMessage
我理解第一个方法的目的,因为它获取传递的消息,制作消息的副本并将其放入队列,但是第二个和第三个方法的目的是什么?
PutReplyMessage
的文档说:
Put a reply message onto the queue using message as the original message
PutReportMessage
的文档说:
Put a report message onto the queue using message as the original message
仅此而已。非常棒且很有帮助的文档。
这三种方法看起来都一样。他们获取传递给方法的原始消息,复制消息(包括正文和属性)并根据原始消息设置一些控制字段,如 MessageId
或 CorrelationId
并放置将新创建的消息放入队列中。它们之间的唯一区别是设置 MessageType
以及控制 header 应如何复制的一些条件。但是我为什么以及什么时候需要这些方法呢?
我希望 PutReplyMessage
将采用带有回复正文的新消息和带有请求的原始消息,并在将回复消息放入队列之前使用消息类型和相关 ID 等必要字段配置回复消息。这个版本似乎用得很少,因为我总是必须创建自己的回复消息来指定其内容并自己配置所有内容。一旦我这样做了,我就可以简单地使用 Put
方法而不是 PutReplyMessage
。
最佳答案
转发消息时,所有消息头字段都保持不变。这包括消息类型、身份上下文等。用户或应用程序必须具有 +passall 授权,并且不能更改 header 字段,只能传递它们。
发送回复消息时,原始消息上下文用于设置回复消息 header 中的一些字段,但回复消息的身份上下文是从放置应用程序继承的,而不是从原始消息。 putter可以选择覆盖回复消息头中的一些字段,例如是否将MsgID
作为回复的MsgID
,放在CorrelID
字段或将应用程序定义的值放在这些字段中。
报告消息旨在用于发送应用程序定义的报告消息,例如ACK
或NACK
。这些不同于 WMQ 定义的 COA 或 COD 报告消息。按照惯例,请求者可以不请求任何消息数据、部分数据或全部数据,但放置应用程序可以自由地接受尽可能多或尽可能少的请求。
WebSphere MQ native 格式和消息类型在 Application Programming Guide 中定义 和 Application Programming Reference 。我认为在每种语言手册中复制此信息可能不合适,但我已经提交了来自 Infocenter .Net 手册页的反馈,建议他们至少可以链接到相关文档中的适当部分。
关于c# - MQQueue 中的 PutReplyMessage 和 PutReportMessage 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7715384/
.NET 和 Java API for WebSphere MQ 中的 MQQueue 类包含三个相似的方法: PutForwardMessage PutReplyMessage PutReportM
我是一名优秀的程序员,十分优秀!