Хранилище очередей Azure: отправка файлов в сообщениях

Я оцениваю хранилище очередей Azure для связи между двумя независимыми приложениями.

Мое требование - отправить файл (плоский файл, размер: от малого до большого) в сообщении очереди.

В соответствии с моим чтением отдельное сообщение в очереди не может превышать 64 КБ, поэтому отправка файла переменного размера в сообщении не может быть и речи.

Другое решение, о котором я могу думать, - это использование комбинации хранилища очередей и хранилища больших двоичных объектов, то есть в сообщении очереди добавить ссылку на файл (в хранилище больших двоичных объектов), а затем, при необходимости, прочитать файл из большого двоичного объекта (используя ссылку / адрес в сообщение в очереди).

У меня вопрос, правильный ли это подход? или есть какие-нибудь другие элегантные способы добиться этого?

Спасибо, Сандип


person user2830364    schedule 22.06.2015    source источник
comment
Ваше решение для хранения файлов в хранилище BLOB-объектов и URL-адреса BLOB-объектов в сообщении - правильный подход.   -  person Gaurav Mantri    schedule 22.06.2015
comment
@GauravMantri - Я согласен, что это хороший (отличный?) Подход, но, не зная приложения OP, я не думаю, что мы можем с уверенностью сказать, что это правильный подход.   -  person David Makogon    schedule 22.06.2015


Ответы (1)


Хотя не существует правильного подхода, поскольку вы можете поместить все, что хотите, в сообщение очереди (в пределах ограничений по размеру), учтите следующее: если размер ваших файлов может превышать 64 КБ, вы просто не можете хранить их в очереди. сообщение, поэтому у вас не будет другого выбора, кроме как хранить свой контент в другом месте (например, капли). Для файлов размером менее 64 КБ вам нужно решить, хотите ли вы использовать два разных метода работы с файлами или просто использовать blob-объекты в качестве источника файлов по всем направлениям и придерживаться последовательного подхода.

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

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

person David Makogon    schedule 22.06.2015
comment
Спасибо Дэвиду за подробный ответ, ценю это. - person user2830364; 22.06.2015
comment
Кстати, есть ли способ сохранить сообщения в очереди после обработки? Я хочу сохранить постобработку сообщений для целей аудита. Можем ли мы отметить сообщение в очереди как выполненное? - person user2830364; 22.06.2015
comment
Эти очереди работают не совсем так. В конце концов, истекает тайм-аут невидимости, а затем сообщение снова становится видимым, в результате чего оно снова оценивается / обрабатывается вашим кодом. Вам нужно будет куда-нибудь выгружать свои сообщения для целей истории / ведения журнала / аудита. - person David Makogon; 22.06.2015
comment
Спасибо за подтверждение, я тоже думал где-нибудь заархивировать - person user2830364; 23.06.2015