小编Bee*_*eez的帖子

如何根据启动标志启动@KafkaListener

仅当标志设置为 true 时,我才尝试启动 KafkaListener。

@Component
public class KafkaTopicConsumer {

//Somehow wrap the listener to only start when a property value is set to true

@KafkaListener(topics = "#{@consumerTopic}", groupId = "#{@groupName}")
public void consumeMessage(ConsumerRecord<String, String> message) throws IOException {
    logger.info("Consumed message from topic: {} with message: {}", message.topic(), message);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法仅确保当 start.consumer 属性等属性设置为 true 时启动侦听器?我不希望只有在我指定要启动应用程序时才启动侦听器。有没有一个好的方法来处理这个用例?

java apache-kafka

4
推荐指数
2
解决办法
7607
查看次数

Flyway可重复脚本抛出表不存在错误

我目前正在尝试将我的版本化脚本精简为一个基线脚本(我们不支付flyway费用,所以很痛苦)。因此,我删除了我的模式并尝试运行我的一个大脚本,其中包含我所拥有的一切。我从 DBeaver 客户端导出了 DDL。但是,当启动我的应用程序时,我收到此错误:

SQL State  : 42P01
Error Code : 0
Message    : ERROR: relation schema-name.my_table_name does not exist
  Position: 13
Location   : db/migration/aaa/R__01_my_script_name.sql 
Line       : 3
Statement  : DELETE FROM "schema-name.my_table_name" WHERE field_name = 'blah' OR field_name = 'blah2'
Run Code Online (Sandbox Code Playgroud)

我相信此错误是因为可重复脚本在版本控制之前运行,而版本控制脚本是创建所有表的原因。据我了解,flyway 最后运行可重复脚本。我是否缺少某种财产或其他什么?这是我的目录结构:

db
 --> migration
     --> my client
       -->R__01_repeatable.sql
       -->V__01_baseline.sql
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请告诉我这里是我的飞行路线属性

  flyway:
    locations: classpath:/db/migration/shared,classpath:/db/migration/${app.client}
    baseline-on-migrate: true
    base_line_version: 1
    placeholders:
      schema-name: ${spring.jpa.properties.hibernate.default_schema}
    schemas: ${spring.jpa.properties.hibernate.default_schema}
    enabled: true
Run Code Online (Sandbox Code Playgroud)

java postgresql flyway

0
推荐指数
1
解决办法
378
查看次数

标签 统计

java ×2

apache-kafka ×1

flyway ×1

postgresql ×1