【问题标题】:postgresql notification channelpostgresql 通知通道
【发布时间】:2017-01-16 06:41:18
【问题描述】:

我目前正在使用 postgresql 的 Notify/Listen 机制,并尝试将其与触发器结合以检测 db 表中的更改并将其发送到用 Java 编写的外部观察程序。在我的测试中,我发现如果没有与它的连接,由 notify 或 listen 创建的通道似乎不会持续。例如,如果通知者执行NOTIFY mymessage, 'blah-blah' sql 脚本然后关闭连接,如果当前没有侦听器正在侦听“mymessage”频道,则该频道将被移除,这意味着有效负载“blah-blah”将迷路了。

有谁知道如何配置 postgresql 数据库以使创建的通知通道永久化以防止消息丢失?或者,有谁知道如何防止 postgresql 表中检测到的事件丢失?

谢谢

【问题讨论】:

  • “如何防止在 postgresql 表中检测到的事件丢失” - 你是什么意思?..

标签: java postgresql


【解决方案1】:

docs 状态:

该通知通道上当前正在收听的所有会话 通知了

(强调我的)。所以不 - 没有什么可配置的。

如果您想在某处保存一些消息以便其他会话稍后可以阅读它,您应该使用公开可读的表格,例如:(message_id bigint, message_text text)。当然,这将需要更多的关系,例如(last_listened_message_id bigint, pid int),而不是一次又一次地阅读所有消息。

如果你想模拟频道,你应该创建更多类似的表或在上面的两个表中添加列...

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 2018-03-01
    • 2013-05-26
    • 2015-10-01
    • 2018-06-20
    • 2019-10-11
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多