MQQueue中PutReplyMessage和PutReportMessage的目的是什么?

本文关键字:是什么 PutReportMessage PutReplyMessage MQQueue | 更新日期: 2023-09-27 18:10:48

用于WebSphere MQ的。net和Java API中的MQQueue类包含三个类似的方法:

  • PutForwardMessage
  • PutReplyMessage
  • PutReportMessage

我理解第一个的目的,因为它接受传递的消息,复制消息并将其放入队列,但第二个和第三个方法的目的是什么?

PutReplyMessage的文档说:

使用message作为原始消息将回复消息放入队列

PutReportMessage的文档说:

使用message作为原始消息将报表消息放到队列中

。真的很棒,很有帮助。

看起来这三个方法做的是一样的。它们接收传递给方法的原始消息,复制消息(包括消息体和属性),并根据原始消息设置一些控制字段,如MessageIdCorrelationId,并将新创建的消息放入队列中。它们之间的唯一区别是设置MessageType和可能的一些条件如何复制控制头。但是我为什么需要这些方法,什么时候需要呢?

我希望PutReplyMessage将接收带有回复正文的新消息和带有请求的原始消息,并在将其放入队列之前使用消息类型和相关Id等必要字段配置回复消息。这个版本似乎很少使用,因为我总是必须创建自己的回复消息来指定其内容并自己配置所有内容。一旦我这样做了,我可以简单地使用Put方法而不是PutReplyMessage

当消息被转发时,所有消息头字段保持不变。这包括消息类型、身份上下文等。用户或应用程序必须具有+passall授权,不能更改报头字段,只能通过它们。

当发送应答消息时,原始消息上下文用于在应答的消息头中设置一些字段,但是应答消息的身份上下文是从发送应用程序而不是从原始消息继承的。发送者可以选择覆盖应答消息头中的一些字段,例如是否将MsgID作为应答的MsgID传递,将其放在CorrelID字段中,或者将应用程序定义的值放在这些字段中。

报表消息用于发送应用程序定义的报表消息,如ACKNACK。这些消息不同于wmq定义的COA或COD报告消息。按照惯例,请求者可以不请求消息数据、部分数据或全部数据,但是请求应用程序可以根据需要自由地执行请求的多少。

WebSphere MQ原生格式和消息类型在应用程序编程指南应用程序编程参考中定义。我认为在每种语言手册中复制这些信息可能是不合适的,但我已经提交了来自Infocenter . net手册页面的反馈,建议他们至少可以链接到相关文档中的适当部分。

MQQueue中PutReplyMessage和PutReportMessage的目的是什么?