有没有可能用骆驼收听 sql table/field?
Is there any possibility to listen on an sql table/field with camel?
我在 karaf 上获得了一个用 camel 和 运行 作为 OSGi 包构建的 Web 服务。
当我在这里收到请求时,我将请求中的数据存储在 MySQL 数据库中。在此之后,另一个包必须检索数据,对其进行处理,然后更新数据集并在完成后立即将其标记为已在数据库中处理。然后第一个包再次检索 processed/changed 数据并将其作为对原始请求的响应发送。
这里的问题是我需要对数据库中的数据进行某种监听,因为整个过程必须尽可能快(用户正在等待答案)。
有没有可能解决这个问题?每隔 x seconds/milliseconds 对 table 进行查询真的很脏...
使用 camel-jpa 组件。您定义一个代表您的 table 数据的 jpa 实体 class。然后你用 from("jpa:...") 开始你的路线。这将自动轮询数据库并将对象发送到每个实体的路由中。然后,您可以删除或更新(@Consumed 方法)table 行。
有一些示例可以证明这一点,例如使用 MyBatis 或 SQL 组件
您也可以像 Christian 所说的那样使用 JPA。
没有特殊的 MySQL 组件使用某些 MySQL 本机 API 来监听事件。我不知道是否有这样的API。 Camel 中的组件是通用的 JDBC/SQL 组件,它们执行 SQL SELECT.
我在 karaf 上获得了一个用 camel 和 运行 作为 OSGi 包构建的 Web 服务。
当我在这里收到请求时,我将请求中的数据存储在 MySQL 数据库中。在此之后,另一个包必须检索数据,对其进行处理,然后更新数据集并在完成后立即将其标记为已在数据库中处理。然后第一个包再次检索 processed/changed 数据并将其作为对原始请求的响应发送。
这里的问题是我需要对数据库中的数据进行某种监听,因为整个过程必须尽可能快(用户正在等待答案)。
有没有可能解决这个问题?每隔 x seconds/milliseconds 对 table 进行查询真的很脏...
使用 camel-jpa 组件。您定义一个代表您的 table 数据的 jpa 实体 class。然后你用 from("jpa:...") 开始你的路线。这将自动轮询数据库并将对象发送到每个实体的路由中。然后,您可以删除或更新(@Consumed 方法)table 行。
有一些示例可以证明这一点,例如使用 MyBatis 或 SQL 组件
您也可以像 Christian 所说的那样使用 JPA。
没有特殊的 MySQL 组件使用某些 MySQL 本机 API 来监听事件。我不知道是否有这样的API。 Camel 中的组件是通用的 JDBC/SQL 组件,它们执行 SQL SELECT.