小编ter*_*abl的帖子

启用 @KafkaListener 从 application.yml 文件中获取可变主题名称

我试图将多个主题加载到一个主题中,@KafkaListener但遇到了麻烦,因为我相信它正在寻找一个常量值,但是topicsapplication.yml文件中初始化变量会导致一些问题,我想知道是否有人可以帮助我解决这个问题,或者指导我如何将多个 Kafka 主题加载到单个 KafkaListener 中。

@KafkaListener通过将它们传递到逗号分隔的对象中,我可以收听相同的多个主题,如下所示:

@KafkaListener(topics = {
           "flight-events",
           "flight-time-events",
           "service-events",
           "flight-delay-events"
   })
Run Code Online (Sandbox Code Playgroud)

我意识到我可以用逗号分隔的值来表示主题,但我希望能够通过配置文件添加主题,而不是更改代码库中的代码。

我相信可能存在的问题是@KafkaListener 需要接受一个常量值,而我无法将注释定义为常量,有什么办法可以解决这个问题吗?

KafkaWebSocketConnector.java

@Component
public class KafkaWebSocketConnector
{


   @Value("${spring.kafka.topics}")
   private String[] topics;

   @KafkaListener(topics = topics)
   public void listen(ConsumerRecord<?, Map<String, String>> message)
   {
      log.info("Received messages on topic [{}]: [{}]", message.topic(), message.value());
      String dest = "/" + message.topic();
      log.info("destination = {}", dest);
      log.info("msg: {}", message);
      messageTemplate.convertAndSend(dest, message.value());
   }
}
Run Code Online (Sandbox Code Playgroud)

application.yml

spring:
  kafka:
    consumer:
      auto-offset-reset: earliest
      group-id: kafka-websocket-connector
    topics: flight-events,
      flight-time-events, …
Run Code Online (Sandbox Code Playgroud)

spring-boot spring-kafka

8
推荐指数
1
解决办法
1万
查看次数

使用Docker Compose和Spotify / kafka启动Kafka主题?

我正在尝试将Kafka主题连接到前端Java Spring应用程序。我正在使用Docker Compose,并尝试使用两个不同的Kafka映像进行连接。

使用wurstmeister / kafka,我可以通过该服务在我的docker.compose.yml文件中启动和运行Kafka主题。但是我无法将创建的主题连接到前端Java Spring应用程序。

kafka:
    image: wurstmeister/kafka:0.10.2.0
    ports:
      - "9092:9092"
    expose:
      - "9092"
      - "2181"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_CREATE_TOPICS: "test-topic1:1:1, test-topic2:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper
Run Code Online (Sandbox Code Playgroud)

其次,使用spotify / kafka,我很难用Kafka创建主题。在文档中,它正在寻找主题作为环境变量,但是以下docker-compose.yml服务并未创建主题。我也尝试在引号周围加上引号,test-topic但效果不佳。

kafka:
    image: spotify/kafka
    ports:
      - "9092:9092"
      - "2181:2181"
    hostname: kafka
    expose:
      - "9092"
      - "2181"
    environment:
      TOPICS: test-topic
Run Code Online (Sandbox Code Playgroud)

我不知道这是否有必要,但是我的整个docker-compose.yml文件如下,请注意,仅当您使用时,zookeeper服务才是必需的wurstmeister/kafka

docker-compose.yml

version: '2'
services:
  # zookeeper:
  #   image: wurstmeister/zookeeper
  #   ports:
  # …
Run Code Online (Sandbox Code Playgroud)

apache-kafka docker docker-compose

5
推荐指数
1
解决办法
5514
查看次数

Docker Compose 与 Zookeeper、Kafka、Redis 和 Java Spring Boot

我很难使用 Docker Compose 将这些容器链接在一起,先说一下我目前也在 Mac 上运行。

该应用程序目前无需使用 Docker Compose 即可运行,因为如果我单独运行这些内容(不使用 Docker),应用程序将按预期运行。

正如预期的那样,这意味着应用程序正在从 Redis 读取数据,并提取某些 Kafka 主题中的数据并将其显示在前端。

关于我认为必要的文件。

docker-compose.yml

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka:0.10.2.0
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_CREATE_TOPICS: "flight-events:1:1,reported-flight-time-events:1:1,pax-flight-events:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper
  redis:
    image: redis
    ports:
      - "6379"
    restart: always
  kafka-websocket-connector:
    build: ./kafka-websocket-connector
    image: <user>/kafka-websocket-connector
    ports:
      - "8077:8077"
    depends_on:
      - kafka
      - redis
      - zookeeper
    links:
      - "kafka"
      - "redis"
Run Code Online (Sandbox Code Playgroud)

Dockerfile所引用的内容kafka-websocket-connector如下:

Dockerfile

FROM …
Run Code Online (Sandbox Code Playgroud)

apache-kafka docker spring-boot docker-compose

4
推荐指数
1
解决办法
2342
查看次数

在Angular/Ionic中格式化日期时间

我想知道如何格式化文本并使日期时间字符串的某些部分变为粗体?

例如,我想制作我当前的日期时间格式,如下所示:02/19/2018 16:00 CST到02/19/2018 16:00 CST.

这是生成当前日期时间格式的代码.

<td{{ visit['end_dte'] | date:'MM/dd/yyyy HH:mm Z'}}</td>

我尝试过这样做,<td{{ visit['end_dte'] | date:'MM/dd/yyyy <b>HH:mm Z</b>'}}</td>但它使得管道被表示为文本而不是加粗时间.

datetime angularjs ionic-framework date-pipe

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