|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Сделал пример на c#, который делает Listen mymsg; Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102.
Но пока не прикрутил таймер по которому вызывается на той же коннекции пустой select 1 - нотификации, генерируемые в триггере на сервере не приходят сами по себе. Вопрос: фактически этот пустой запрос является запросом на получение нотификаций. Без этого никак? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 16:25 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Ролг Хупин, Вам надо в профильный форум по C#. Если хотите помощи в рамках Postgres'а, то оформите это всё в чистом SQL-е. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 17:58 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
vyegorovРолг Хупин, Вам надо в профильный форум по C#. Если хотите помощи в рамках Postgres'а, то оформите это всё в чистом SQL-е . ну что за глупости, где вы в наши дни видели что-то в чистом виде. Вопрос не относится к шарпу, он относится к нотификациям. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 19:01 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Ролг Хупин, Не вызывая запросов в базу вы нотификации не получите. Механизм нотификаций рассчитан на приложение которое и так с базой работает само по себе и вызывает запросы а не на приложение которое только ждет нотификации и после этого начинает что то делать. Так что да - вам надо периодически вызывать select 1 или любой другой запрос в базу чтобы их получать. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 19:08 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Maxim Boguk, да, всё ясно, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 19:17 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Еще вопрос: если предположим 200-300 подключенных клиентских приложений и все - постоянные слушатели нотификаций и одновременно нотификаторы - это нормальная практика? Нотификации в этом случае на уровне изменения прикладных объектов, т.е. изменений в мастер таблице и в самом приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 19:28 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Ролг ХупинЕще вопрос: если предположим 200-300 подключенных клиентских приложений и все - постоянные слушатели нотификаций и одновременно нотификаторы - это нормальная практика? Нотификации в этом случае на уровне изменения прикладных объектов, т.е. изменений в мастер таблице и в самом приложении. Это архитектурно кривое решение (IMHO конечно). -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 19:31 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Maxim BogukРолг ХупинЕще вопрос: если предположим 200-300 подключенных клиентских приложений и все - постоянные слушатели нотификаций и одновременно нотификаторы - это нормальная практика? Нотификации в этом случае на уровне изменения прикладных объектов, т.е. изменений в мастер таблице и в самом приложении. Это архитектурно кривое решение (IMHO конечно). -- Maxim Boguk www.postgresql-consulting.ru Собственно решение я и не описывал. А сама ситуация с точки зрения реализации - успеет ли обработать сервер все запросы и т.д.? То есть запрос на получение - каждую секунду от каждого приложения, отправка нотификации не так часто от любого приложения, может раз в 5-10 сек. Хорошо, какое решение лучше? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2016, 19:46 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Ролг ХупинMaxim Bogukпропущено... Это архитектурно кривое решение (IMHO конечно). -- Maxim Boguk www.postgresql-consulting.ru Собственно решение я и не описывал. А сама ситуация с точки зрения реализации - успеет ли обработать сервер все запросы и т.д.? То есть запрос на получение - каждую секунду от каждого приложения, отправка нотификации не так часто от любого приложения, может раз в 5-10 сек. Хорошо, какое решение лучше? В режиме запрос раз в секунду и нотификации раз в 5-10 секунду думаю проблемы не будет особой на нормальном сервере. А про какое решение лучшее - вы сначала объясните что вы пытаетесь сделать то и зачем. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 19:47 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Напишите dll на С (c C# подружить не проблема). Внутри используйте родную libpq. Устанавливайте соединение с БД, подписывайтесь на соответствующие уведомления, получайте сокет соединения и устанавливайте на него слушатель на переход в режим чтения (если без напряга, то каким-нибудь libev, иначе select/poll/epoll в зависимости от оси). В колбэке на сие событие высасываете из постгреса все доступные уведомления. Всё прилетит без всяких select'ов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 22:21 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Добрый день. Есть приложение, которое подписано на изменения в БД. Подключаюсь к БД через pgAdmin. Выполняю запросы (по очереди): Код: sql 1.
Код: sql 1.
Оба выполняются успешно, об это пишется в pgAdmin. Но в приложение эти оповещения приходят в течении минуты. Т.е. могут сразу прийти, а могут через минуту. Сервер: PostgreSQL 9.5.18, compiled by Visual C++ build 1800, 64-bit Не подскажите куда смотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2019, 15:49 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
DrinkinSSTIДобрый день. Есть приложение, которое подписано на изменения в БД. Подключаюсь к БД через pgAdmin. Выполняю запросы (по очереди): Код: sql 1.
Код: sql 1.
Оба выполняются успешно, об это пишется в pgAdmin. Но в приложение эти оповещения приходят в течении минуты. Т.е. могут сразу прийти, а могут через минуту. Сервер: PostgreSQL 9.5.18, compiled by Visual C++ build 1800, 64-bit Не подскажите куда смотреть? Так это вопрос к вашему приложению как оно нотифаи от базы вычитывает... он же всеравно pull а не push в реальности. Так что это документацию к вашей библиотеке читать надо. В простейшем случае например вот так вот "With the libpq library, the application issues LISTEN as an ordinary SQL command, and then must periodically call the function PQnotifies to find out whether any notification events have been received.". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2019, 17:11 |
|
Вопрос по Notify/Listen
|
|||
---|---|---|---|
#18+
Нашел решение вот тут: https://www.npgsql.org/doc/wait.html Сделал так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
И запускаю так: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2019, 08:59 |
|
|
start [/forum/topic.php?fid=53&msg=39271147&tid=1995120]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 281ms |
total: | 408ms |
0 / 0 |