Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не получается с очередями pgq / 4 сообщений из 4, страница 1 из 1
24.09.2015, 07:58
    #39059975
ankalex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается с очередями pgq
Доброго времени суток.
Администратор базы установил 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
25.09.2015, 20:49
    #39061657
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается с очередями pgq
нужно смотреть код, как вы вставляете / читаете. где и как идет работа с транзакциями.
...
Рейтинг: 0 / 0
26.09.2015, 12:51
    #39061896
Кактуз
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается с очередями pgq
ankalex,

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

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


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