2015-06-08 4 views
0

У нас есть предстоящее развертывание для системы, которая обрабатывает множество сообщений через BizTalk. Поскольку эти сообщения являются совокупными обновлениями, они должны быть поставлены в очередь во время сбоя развертывания, а затем обработаны, когда развертывание завершено. Поскольку их может быть очень много, это трудно сделать вручную.SQL для возобновления приостановленных сообщений в порядке

Одним из возможных решений является остановка порта отправки и отправка сообщений. Затем мы можем возобновить их, когда развертывание завершено.

Возможно ли запустить SQL-скрипт (или инструмент) против базы данных сообщений BizTalk, который возобновит приостановленные сообщения для определенного порта в порядке поступления?

ответ

0

Если вы остановите порт (но оставьте его подпиской) и снова запустите его, он должен возобновить само сообщение, или если он не достаточно прост, чтобы войти в Консоль администрирования и возобновить их.

Однако, если ответные сообщения порта отправки также подписаны, запустив «Оркестровки», вы не сможете развернуть Оркестровки до тех пор, пока все они не будут завершены, поэтому остановка порта отправки не будет работать в этом сценарии.

Иногда один вариант заключается в том, что инициирующий порт является односторонним приемом, заключается в том, чтобы остановить местоположение приема и дать возможность завершить все. Затем вы можете остановить приложение и повторно развернуть его и перезапустить, а порт отправки заберет все ожидающее сообщение для обработки.

Если это невозможно, вы можете захотеть взглянуть на выполнение side by side deployment, в котором вы увеличиваете номера версий всех сборок в решении, чтобы вы могли одновременно развертывать обе версии, и затем вы можете разрешить старое чтобы завершить работу, но новая версия обрабатывает любые новые сообщения.

+0

Если вы возобновите несколько приостановленных сообщений в каком порядке обрабатываете их? Несколько обновлений для одного элемента необходимо обрабатывать в том порядке, в котором они были выполнены. – Jay

+2

У вас включена доставка заказа на порт отправки? Затем в том порядке, в котором они помещаются в поле сообщения, на самом деле вы увидите только один приостановленный экземпляр, в котором все они находятся в очереди. Если вы не включили его, тогда даже при нормальной работе нет гарантии, что они будут заказаны. – Dijkgraaf

+0

К сожалению, это не заказанная доставка. Возможно, это будет возможность включить его. Спасибо – Jay

-1

Лучше всего отправлять сообщения в msmq, обычно для этого не требуется дополнительного кодирования. Вы можете просто отправлять сообщения на msmq с помощью адаптера MSMQ, а затем после развертывания получать их, чтобы адаптер MSMQ позволял получать по порядку. Просто убедитесь, что вы выполняете небольшой тест в среде QA, прежде чем делать это на производстве.

+0

Интересная идея. Я попробую и посмотрю, смогу ли я заставить его работать – Jay

1

Если у вас есть предписанное требование (вы это делаете или не делаете), тогда Отправляющий порт должен быть помечен для Упорядоченная доставка.

Если это так, то при запуске Stopped Send Port сообщения будут обрабатываться в том же порядке, в каком они были отправлены.

+0

Спасибо, это было то, что мне нужно было знать. Сообщения обычно обрабатываются по мере их поступления, поэтому заказанная доставка не установлена. Поскольку во время установки будет сформировано отставание, необходимо ввести принудительное упорядочение. – Jay

Смежные вопросы