powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не получается с очередями pgq
4 сообщений из 4, страница 1 из 1
Не получается с очередями pgq
    #39059975
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.
Администратор базы установил pgq.
Пробую выполнить
Код: plsql
1.
2.
3.
4.
5.
6.
select pgq.create_queue('TestQueue');
select pgq.insert_event('TestQueue', 'data', 'Data1');
select pgq.register_consumer('TestQueue', 'TestConsumer');
select pgq.next_batch('TestQueue', 'TestConsumer');--запоминаю batch_id
select * from pgq.get_batch_events(batch_id);
select pgq.finish_batch(batch_id);


pgq.get_batch_events отрабатывает, выдает строку.
Повторно выполняю pgq.insert_event, затем pgq.next_batch (выдает batch_id не сразу, сперва Null, приходится ждать полминуты примерно), но pgq.get_batch_events больше строк не выдает.
Причем если в приведенном блоке команд после выполнения pgq.insert_event и до выполнения pgq.register_consumer подождать минуту, а не выполнять эту команду сразу, то pgq.insert_event также не выдаст данных.
Такое впечатление, как будто ticker убирает вставленные с помощью pgq.insert_event данные куда-то.
Может подсказать кто-нибудь, в чем может быть дело.
Или я что-то делаю не так?
Если выполнять pgq.insert_event после pgq.register_consumer - pgq.get_batch_events вообще ничего не выдает.
...
Рейтинг: 0 / 0
Не получается с очередями pgq
    #39061657
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно смотреть код, как вы вставляете / читаете. где и как идет работа с транзакциями.
...
Рейтинг: 0 / 0
Не получается с очередями pgq
    #39061896
Кактуз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ankalex,

pgq.insert_event нужно выполнять после pgq.register_consumer, тк если на очередь нет зарегистрированных консумеров то ивенты просто дропаются.
Если pgq.get_batch_events ничего не выдает, значит это пустой батч, нужно его зафинишить и взять новый, и так пока не получите батч с ивентами.
...
Рейтинг: 0 / 0
Не получается с очередями pgq
    #39062808
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кактуз,

спасибо за подсказку, стал последовательно выполнять pgq.next_batch, pgq.get_batch_events, pgq.finish_batch и в итоге добрался до ранее отправленных в очередь данных.
Почему-то в примерах по pgq нигде не встречал циклов, всегда данные извлекались одним запросом.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не получается с очередями pgq
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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