当前位置: 首页 > 知识库问答 >
问题:

Debezium,Kafka-connect:postgres的更新不是以消息的形式显示的,只有inserts才是

秦俊发
2023-03-14

我正在使用命令:#bin/connect-standalone.sh config/connect-standalone.properties config/debezium-config.properties

我的debezium-config.properties是:

name=publications-connector
database.hostname=localhost
database.port=5432
database.user=andy
database.password=postgres
database.dbname=postgres
database.server.name=dbserver1
table.whitelist=public.publications

在Postgres中,我有一个表叫做publications

当我将新记录插入publications表时,我可以看到我的使用者以json格式显示新消息。

但是,当我将现有的记录更新到发布中时,没有新的消息发布到主题,因此没有任何可使用的内容。

此外,我想添加另一个表'comments'到我的html" target="_blank">数据库。我需要对debezium-config.properties文件或其他任何地方做什么更改才能将这些消息发布到它自己的主题中?

我从控制台看到以下日志:警告:从“source_info[server=dbserver1'db='postgres',....schema=public,table=publications]”的更新消息中找不到表“public.publications”的值;正在跳过记录(IO.Debezium.Connector.Postgres.RecordsStreamProducer:333)

谢谢,

共有1个答案

卢普松
2023-03-14

在详细阅读了许多debezium主题之后,我能够通过将副本标识设置为Full来解决这个问题。一旦我这样做了,在更新时,我就能够看到更新消息并使用它们。

 类似资料:
  • 访问者订阅,我检索FCM令牌。 我使用POST将此消息推送到https://fcm.googleapis.com/fcm/send 它总是说成功=1, 但事实上,只有当网站关闭时,信息才会被传递! 当我关闭选项卡并再次推送消息时,消息被传递。 此外,如果我打开网站或我去该领域的任何地方,如http://example.org/whatever/,但仍返回“success=1”。 测试了Chrome

  • 我试图只获得新版本的行已更改,而不是git diff显示的所有其他信息。 用于: 它显示: 我想看到的只是: 可能吗?

  • 关于合流博客 只有一次语义是可能的:Kafka就是这样做的 精确一次语义学:即使生产者重试发送消息,它也会导致消息仅一次传递给最终消费者。精确一次语义学是最理想的保证,但也是一个很少被理解的保证。这是因为它需要消息传递系统本身与生成和消费消息的应用程序之间的合作。例如,如果在成功消费消息后,您将Kafka消费者倒带到上一个偏移量,您将再次收到从该偏移量到最新偏移量的所有消息。这说明了为什么消息传递

  • 假设我对同一个消息键有不同的值。 例如: 在上述情况下,我只需要用户更新的最新值,即“user789@xyz.com”。 我的kafka流应该只给我第三个值,而不是前两个值。

  • 我没有找到任何关于Debezium如何设置Kafka消息时间戳的文档,以及是否设置了时间戳。 通过比较这些值,Kafka消息的时间戳总是在数据库表(source.ts_ms)更改的时间戳之后,也在Debezium(ts_ms)处理更改的时间之后。这表明Kafka消息时间戳只是Kafka代理设置为摄入时间的时间戳。 有人知道关于Debezium是否以及如何在其填充的接收器主题中设置Kafka消息时间

  • 我正在使用Debezium Postgres连接器。我在Postgres中有两个表,分别命名为'publications'和'comments'。根据标准示例,kafka和zookeeper运行在docker容器中。postgres正在本地运行。在使用debezium postgres connect之后,我有以下主题: __consumer_offsets dbserver1.public.co