Подтвердите сообщение JMS в подпроцесс

Есть ли способ подтвердить сообщение JMS в подпроцессе?

У меня есть процесс A, который начинается с JMS Queue Receiver (или JMS Topic Subscriber). Он вызывает процесс B, который должен подтвердить полученное сообщение - я использую режим явного подтверждения Tibco EMS.

Это позволит мне повторно использовать некоторые части. Возможно ли это сделать?

2 ответа

Решение

Боюсь, это невозможно. Подтверждение всегда должно происходить в том же процессе, что и получатель.

В хорошо спроектированной архитектуре вы не хотите разделять уровень обмена сообщениями (и подтверждать), а скорее помещаете всю функциональную обработку в подпроцесс, имеющий параметр результата, указывающий, следует ли сохранить первоначальное сообщение (отложите обработку на более позднее время не подтверждая) или пометить его как "обработанный" (и подтвердить его).

По умолчанию все (JMS) сообщения автоматически подтверждаются, поэтому явное подтверждение - это выбор дизайна, сделанный вами (на основе конкретной модели потребления) на вкладке конфигурации запуска / шага процесса. Вы должны использовать это, только если вы знаете, что происходит с этим сообщением, и если возможна отсрочка обработки. Большая часть слабо связанных сообщений не является "транзакционной" (за исключением того, что вы решаете потратить лишнюю милю) в смысле БД - поэтому лучше придерживаться автоматического подтверждения, если у вас нет особого требования к обработке! BW/EMS достаточно хороши в обработке (достаточно небольших) сообщений, поэтому автоматическое подтверждение НЕ может создать повторные доставки в течение миллисекунд и затопить всю систему (пространство кучи), если не обрабатывается должным образом.

Другие вопросы по тегам