Какова цель PutReplyMessage и PutReportMessage в MQQueue? - PullRequest
3 голосов
/ 10 октября 2011
Класс

MQQueue в API .NET и Java для WebSphere MQ содержит три аналогичных метода:

  • PutForwardMessage
  • PutReplyMessage
  • PutReportMessage

Я понимаю цель первого, потому что он принимает переданное сообщение, делает копию сообщения и помещает его в очередь, но какова цель второго и третьего метода?

Документация для PutReplyMessage гласит:

Поместить ответное сообщение в очередь, используя сообщение в качестве исходного сообщения

Документация для PutReportMessage говорит:

Поместить отчетное сообщение в очередь, используя сообщение в качестве исходного сообщения

Больше ничего.Действительно отличный и полезный документ.

Похоже, что все три метода делают то же самое.Они принимают исходное сообщение, переданное методу, создают копию сообщения (включая тело и свойства) и задают некоторые управляющие поля, например MessageId или CorrelationId, на основе исходного сообщения и помещают вновь созданное сообщение в очередь.Единственная разница между ними - установка MessageType и, возможно, некоторые условия, как следует копировать контрольные заголовки.Но зачем и когда мне нужны эти методы?

Я ожидаю, что PutReplyMessage примет новое сообщение с телом ответа и исходное сообщение с запросом и настроит ответное сообщение с необходимыми полями, такими как тип сообщения и Id корреляции, прежде чем поместить его в очередь.Эта версия кажется менее полезной, потому что мне всегда приходится создавать собственное ответное сообщение, чтобы указать его содержимое и настроить все самостоятельно.После этого я могу просто использовать метод Put вместо PutReplyMessage.

1 Ответ

2 голосов
/ 18 октября 2011

Когда сообщение пересылается, все поля заголовка сообщения остаются без изменений. Это включает в себя тип сообщения, контекст идентификации и т. Д. Пользователь или приложение должны иметь + passall авторизацию и не могут изменять поля заголовка, но могут только передавать их.

Когда отправляется ответное сообщение, исходный контекст сообщения используется для установки некоторых полей в заголовке сообщения ответа, но контекст идентификатора ответного сообщения наследуется от прикладывающего приложения, а не от оригинальное сообщение. Паттер может переопределить некоторые поля в заголовке ответного сообщения, например, передать ли MsgID как MsgID ответа, поместить его в поле CorrelID или поместить значения, определенные приложением, в эти поля.

Сообщение отчета предназначено для отправки сообщений отчета, определенных приложением, таких как ACK или NACK. Они отличаются от сообщений отчетов COA или COD, определенных WMQ. По соглашению, запрашивающая сторона может запросить не данные сообщения, частичные данные или все данные, но приложение для размещения может выполнить столько запросов, сколько пожелает.

Собственные форматы и типы сообщений WebSphere MQ определены в Руководстве по прикладному программированию и Справочнике по прикладному программированию . Я считаю, что, вероятно, неуместно дублировать эту информацию в каждом руководстве по языкам, но я отправил отзыв со страницы справочного руководства Infocenter .Net, в котором предлагалось, чтобы они хотя бы ссылались на соответствующий раздел соответствующего документа.

...