【问题标题】:How to receive PostgreSQL LISTEN/NOTIFY with Apache Camel?如何使用 Apache Camel 接收 PostgreSQL LISTEN/NOTIFY?
【发布时间】:2014-02-04 14:45:19
【问题描述】:

我有一个 PostgreSQL 数据库,当插入表中的行时会触发 NOTIFY mychannel

我想使用 Apache Camel 将此信息发送到各种来源(Twitter 等)。

我了解可以使用 JDBC 并调用 LISTEN mychannel 来接收这些通知,但可能需要使用轮询。

我对 Camel 很陌生,所以不知道从哪里开始。这是我会用 SQL、JDBC 或轮询消费者连接器做的事情吗?

有没有内置的方法可以在 Camel 中有效地做到这一点?

【问题讨论】:

  • 客户端只有在主动从服务器取回东西时才能收到通知。所以你需要轮询服务器以获取通知。
  • PgJDBC 中的底层接口在the PgJDBC documentation 中讨论。您需要原始 JDBC java.sql.Connection,然后将其转换为 PGConnection 并调用 getNotifications()。如果 Camel 有自己的支持,它将通过 JDBC 驱动程序中的该接口,因此请在 Camel 源代码中查找 getNotifications

标签: postgresql apache-camel notify listen


【解决方案1】:

使用更新的答案更新此问题。此骆驼组件已创建:

http://camel.apache.org/pgevent.html

【讨论】:

    【解决方案2】:

    使用pgjdbc-ng 驱动程序。它支持无需轮询的异步通知。

    Write a Camel Component 使用它。请参阅 Guava Eventbus 组件source code 获取灵感。

    【讨论】:

      猜你喜欢
      • 2016-11-26
      • 2023-04-01
      • 1970-01-01
      • 2018-01-07
      • 2013-04-30
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      相关资源
      最近更新 更多