powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / В чем смысл acknowledgement в мессаджинговых системах
25 сообщений из 37, страница 1 из 2
В чем смысл acknowledgement в мессаджинговых системах
    #39506197
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю вопрос общ для jms API и для других.

1. Говорят, что есть acknowledgement для producer и для consumer

Для consumer понятно:
Консумер в какой-то момент говорит - я сообщение обработал, можешь удалять его из очереди и брокер получив этот ack удаляет сообщение из очереди.

я для продюсера как acknowlegement работает?

2. Вопрос относительно JMS

dups-OK-acknowledge mode
https://docs.oracle.com/cd/E19587-01/821-0029/aeqbk/index.html In dups-OK-acknowledge mode, the session automatically sends a client acknowledgment each time it has received a fixed number of messages, or when a fixed time interval has elapsed since the last acknowledgment was sent. (This fixed batch size and timeout interval are currently 10 messages and 7 seconds, respectively, and are not configurable by the client.) Unlike the first two modes described above, the broker does not acknowledge receipt of the client acknowledgment, and the session thread does not block awaiting such return acknowledgment from the broker. This means that you have no way to confirm that your acknowledgment has been received; if it is lost in transmission, the broker may redeliver the same message more than once. However, because client acknowledgments are batched and the session thread does not block, applications that can tolerate multiple delivery of the same message can achieve higher throughput in this mode than in auto-acknowledge or client-acknowledge mode.

Вот ничего не понял из этого объяснения.
Зачем такой мод нужен?
Откуда берутся повторяющиеся сообщения?
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506211
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerя для продюсера как acknowlegement работает?

Если подтверждение от потребителя не дошло, то сообщение останется в очереди. Продюсер сообщает потребителю, что всё ОК. Сообщение удалено. В противном случае консюмеру надо слать ещё одно подтверждение, это дешевле чем повторно обрабатывать задачу.

questionerВот ничего не понял из этого объяснения.

То есть всё что выше в той же статье понятно??

questionerЗачем такой мод нужен?

Подтверждения не бесплатны. Оптимизация подтверждений позволяет выжать больше производительности.

questionerОткуда берутся повторяющиеся сообщения?
Ну, если подтверждение нет, то другая сторона, должна повторно отправить сообщение.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506216
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Blazkowiczquestionerя для продюсера как acknowlegement работает?

Если подтверждение от потребителя не дошло, то сообщение останется в очереди. Продюсер сообщает потребителю, что всё ОК. Сообщение удалено. В противном случае консюмеру надо слать ещё одно подтверждение, это дешевле чем повторно обрабатывать задачу.

Мне кажется Вы ответили на другой какой-то вопрос. Я про продюсера спрашивал.

Насколько я понял потребитель ничего не знает про продюсера они оба знают про брокера сообщений.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506219
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz Подтверждения не бесплатны. Оптимизация подтверждений позволяет выжать больше производительности.

А можете как-то более понятно чем в доке выразить как это работает. Что за 10 сообщений и 7 секунд?
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506223
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerМне кажется Вы ответили на другой какой-то вопрос. Я про продюсера спрашивал.
Насколько я понял потребитель ничего не знает про продюсера они оба знают про брокера сообщений.
А, ну да. Я брокера имел ввиду. А что про продюсера? Там всё просто, отправил - получит подтверждение. То же самое всё что из консюмером.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506226
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerА можете как-то более понятно чем в доке выразить как это работает.

Мне не понятно. То есть с auto-acknowledge и client-acknowledge вам всё кристично понятно и только в dups-OK-acknowledge mode какое-то непонимание на ровном месте? Какое именно?

questionerЧто за 10 сообщений и 7 секунд?
Хардкод размера батча и таймаута в Sun GlassFish Message Queue 4.4
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506232
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczкристично
"Кристально чисто"
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506237
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerМне кажется Вы ответили на другой какой-то вопрос. Я про продюсера спрашивал.
Насколько я понял потребитель ничего не знает про продюсера они оба знают про брокера сообщений.
А, ну да. Я брокера имел ввиду. А что про продюсера? Там всё просто, отправил - получит подтверждение. То же самое всё что из консюмером.

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

для продюсера: мы шлём сообщение(видимо тоже с айдишником каким-то) и через какое-то время получаем(или не получаем) подтверждение. Тут видимо какая-то логика для нас может быть.

AUTO_ACKNOWLEDGE
для потребителя: как только вызвался метод onMessage - на брокер ушло подтверждение
для производителя: не особо понятно. он может всегда одинаково работает?

CLIENT_ACKNOWLEDGE
для потребителя: когда потребитель решил, что сообщение принято, тогда и шлётся подтверждение
для производителя: наверное разницы с предыдущим модом нет


DUPS_OK_ACKNOWLEDGE
непонятно
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506238
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerА можете как-то более понятно чем в доке выразить как это работает.
Дык, вроде, просто всё. DUP_OK обозначает что система не сломается если вдруг придут повторы. Излишние "подтверждения" позволяют избежать повторов. Но требуют ресурсов. Если повторы не страшны, то можно оптимизировать, сократив количество "подтверждений". Повторы приходят только во время сбоев, когда подтверждение было не доставлено. Предполагается что сбоев в работающей системе должно быть не много.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506256
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

оттуда жеNote –

All of the acknowledgment modes discussed above apply to message consumption . For message production, the broker’s acknowledgment behavior depends on the message’s delivery mode (persistent or nonpersistent; see Message Header). The broker acknowledges the receipt of persistent messages, but not of nonpersistent ones; this behavior is not configurable by the client.

Вероятно, не стоит продюсера в эту же кучу мешать.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506270
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerА можете как-то более понятно чем в доке выразить как это работает.
Дык, вроде, просто всё. DUP_OK обозначает что система не сломается если вдруг придут повторы. Излишние "подтверждения" позволяют избежать повторов. Но требуют ресурсов. Если повторы не страшны, то можно оптимизировать, сократив количество "подтверждений". Повторы приходят только во время сбоев, когда подтверждение было не доставлено. Предполагается что сбоев в работающей системе должно быть не много.

Это я понял.

Вот смотрите есть консумер, который работает с DUP_OK.

получил сообщение... второе... десятое и после этого шлёт подтверждение, что я получил 10 сообщений с такими то айди. Брокер получает сообщение и удаляет эти 10 сообщений из очереди.

Это для случая если сообщения пришли в диапазоне 7 секунд.

Что будет если за первые 6 секунд пришло только 5 сообщений и потом за 1 секунду активности не наблюдалось. Потребитель отправит подтверждение только по 5 сообщениями? Это происходит автоматически или я в коде таки должен написать что-то типа msg.ack() ?


Видимо я не очень понимаю что будет происходить если допустим

на потребителе есть 2 потока которые читают очередь параллельно.

если первый запросил и получил сообщение
второй тоже запросил сообщение и получил
первый шлёт ack

Оба они считают одно и то же сообщение?

Я понимаю, что это point to point но в amqp могут 2 потребителя читать одну очередь.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506277
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerна потребителе есть 2 потока которые читают очередь параллельно.

Это ошибочная формулировка. Два потока - две сессии. Две сессии - два потребителя.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506282
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЧто будет если за первые 6 секунд пришло только 5 сообщений и потом за 1 секунду активности не наблюдалось. Потребитель отправит подтверждение только по 5 сообщениями?
Да
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506283
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner Это происходит автоматически или я в коде таки должен написать что-то типа msg.ack() ?
Автоматически. В коде надо писать для Client Acknowledge режима.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506299
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerесли первый запросил и получил сообщение
второй тоже запросил сообщение и получил
первый шлёт ack

Оба они считают одно и то же сообщение?

Хороший вопрос. Но, думаю, что вряд ли брокер отдаёт всем клиентам одно и то же сообщение. Сообщение после отправки помечается, а если по таймауту не пришло подтверждение, то метка снимается и сообщение может получить уже другой потребитель.
Это, вроде, логичный алгоритм.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506312
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczquestionerесли первый запросил и получил сообщение
второй тоже запросил сообщение и получил
первый шлёт ack

Оба они считают одно и то же сообщение?

Хороший вопрос. Но, думаю, что вряд ли брокер отдаёт всем клиентам одно и то же сообщение. Сообщение после отправки помечается, а если по таймауту не пришло подтверждение, то метка снимается и сообщение может получить уже другой потребитель.
Это, вроде, логичный алгоритм.

То есть иметь двух консумеров для одной очереди это возможно?

разница с топиком в том, что брокер может удалить сообщение из очереди после одного подтверждения, а из топика после получения подтверждения всех подписанных?
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506341
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

По поводу дупликатов.

Получили мы за 3 секунды 3 сообщения и упали. брокер ничего не знает. мы поднялись, запросили сообщения и повторно прилетают те же самые?
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506373
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerТо есть иметь двух консумеров для одной очереди это возможно?


Невозможно, поскольку слово "консумер" не существует. Нафига вы переметнулись с RasbbitMQ - уж начали бы изучать что-то одно (AMQP), потом другое (JMS). Лучше иметь представление о том и о сём, чтобы выбирать, что больше подходит. Ваши вопросы относятся к функционированию JMS, значит, надо почитать документацию о JMS (есть на сайте Oracle).
В JMS есть 2 модели подписки (subscription) получателей на сообщения - очередь (queue) и тема (topic). В AMQP их больше. В теме можно сделать подписку многим получателям, сообщение будет удалено, когда все получат.

questionerПолучили мы за 3 секунды 3 сообщения и упали.

На этот случай предусмотрено отключение автоматического оповещения о получении (auto acknowlegment). Вы получаете сообщение или нужный вам набор сообщений. используете в своей программе и уже потом даёте вручную оповещение, что сообщение больше не нужно и его можно удалять.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506453
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Partisan M
Невозможно, поскольку слово "консумер" не существует.

Тут не форум лингвистов.
Partisan MНафига вы переметнулись с RasbbitMQ - уж начали бы изучать что-то одно (AMQP), потом другое (JMS).
никуда не перемётывался. Я попробовал amqp...всякие фанауты и директы(простите за причинённую боль). На спринге запустил 2 приложения - вроде сообщения передаются, чего ещё изучить я не понял.
Вот дошло дело и до JMS.

Partisan MquestionerПолучили мы за 3 секунды 3 сообщения и упали.

На этот случай предусмотрено отключение автоматического оповещения о получении (auto acknowlegment). Вы получаете сообщение или нужный вам набор сообщений. используете в своей программе и уже потом даёте вручную оповещение, что сообщение больше не нужно и его можно удалять.

Напомню, вопрос был про Dups-ok. Я не имел ввиду, что описанное мной поведение "плохое" - я просто интересовался будет ли так или не так.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506660
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что в науке и технике есть принципы подобия.
Jms подобен сетевым протоколам.

И хотя он сам может быть встроен в разные уровни сетевого
Стека - тем не менее он имеет свои механизмы подтверждений.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506713
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

JMS это не протокол
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39506741
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
Ты слово "подобен" пропустил.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39507077
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczquestionerесли первый запросил и получил сообщение
второй тоже запросил сообщение и получил
первый шлёт ack

Оба они считают одно и то же сообщение?

Хороший вопрос. Но, думаю, что вряд ли брокер отдаёт всем клиентам одно и то же сообщение. Сообщение после отправки помечается, а если по таймауту не пришло подтверждение, то метка снимается и сообщение может получить уже другой потребитель.
Это, вроде, логичный алгоритм.

На самом деле в prod/cos брокер отдает только одному консьюмеру сообщение из очерди и очевидно удаляет отданное сообщение из очереди. Про таймаут я впервые слышу возможно есть такой механизм давно спеки не читал.
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39507091
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunka,

Ну а зачем тогда нужен рacknowledge если он отдаёт сразу как удалил?
...
Рейтинг: 0 / 0
В чем смысл acknowledgement в мессаджинговых системах
    #39507170
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЗачем такой мод нужен? http://docs.oracle.com/javaee/5/api/javax/jms/Session.html#DUPS_OK_ACKNOWLEDGE This acknowledgment mode instructs the session to lazily acknowledge the delivery of messages . This is likely to result in the delivery of some duplicate messages if the JMS provider fails, so it should only be used by consumers that can tolerate duplicate messages. Use of this mode can reduce session overhead by minimizing the work the session does to prevent duplicates .
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / В чем смысл acknowledgement в мессаджинговых системах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]