Может ли клиент получить несколько сообщений из очереди до их подтверждения?

Моя программа будет получать сообщения довольно медленно; и я хочу, чтобы они оставались в очереди, пока я не получу их все и не признаю их всех. Я не знаю, достаточно ли у меня сообщений, пока я не получу кучу их.

Мой вопрос: блокирует ли очередь, ожидая подтверждения от первого сообщения, прежде чем доставить второе?

2 ответа

При установке режима подтверждения на Session.CLIENT_ACKNOWLEDGE Вы можете получить столько сообщений, сколько вам нужно. Сообщения будут заблокированы на сервере, поэтому никто другой пользователь не сможет их получить. Таким образом, ответ - нет, очередь не будет блокироваться (даже если это могут быть специфичные для провайдера настройки, которые могут это сделать, чего я не знаю).

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

Проверьте вашу ссылку. Подтверждение сообщения управления

Ну, я запустил один тест с использованием примера кода производителя / потребителя. У потребителя фактически есть некоторый код (если вы переключитесь на ClientAcknowledge). Он получает кучу сообщений (10 из них) и только подтверждает последнее.

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