有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在向Azure事件中心上的主题发送事件时有3035秒的延迟

我有一个API,它接收Http Post负载,处理它并创建一个cloudEvent 当它部署到DEV/QA环境时,它会在this tutorial之后使用Azure事件中心

工作流程如下所示:

  1. 传入对“A”api的http请求
  2. “A”api对负载执行一些逻辑(save-son-db等),并针对给定主题创建cloudEvent
  3. “B”应用程序使用此事件,它向“C”api发出http请求
  4. “C”api执行一些逻辑并将Http 200返回给“B”
  5. “B”然后使用“C”的给定响应创建另一个主题的另一个事件
  6. “D”使用第二个主题中的第二个事件,并调用“A”api上的PUT端点
  7. “A”api更新数据库中的某些值

在最后一步中,我在更新之后添加了一个日志,以检查从步骤1到步骤7的时间(比较db中的creation_date字段与当前LocalDateTime)。大多数请求需要1-4秒才能完成7个步骤,但有些请求需要30秒以上:

[End-to-End operation time] id: '1234' - type: 'dummy' - time (in seconds): '33.52s'

起初,我认为这可能是一些消费者配置,但是看到cloudEvent头,它会显示类似于creation\u time=04:20:05(我在创建第一个事件时在步骤1中设置)

但当我检查卡夫卡托尔上的时间戳时,它会显示:timestamp=04:20:38 我猜它设置了创建时间并创建了第一个事件,但由于某些原因,它直到30秒后才进入主题

卡夫卡制作人那边有什么我不知道的东西吗?对卡夫卡和事件驱动的沟通来说相对较新,因此任何见解都值得赞赏

卡夫卡制作人代码:

CloudEvent cloudEvent = CloudEventBuilder.v1()
      .withExtension("payloadversion", Constants.PAYLOAD_VERSION_DUMMY)
      .withId(UUID.randomUUID().toString())
      .withType(Constants.EVENT_TYPE_DUMMY)
      .withSource(Constants.URI_SOURCE_DUMMY)
      .withDataContentType(Constants.JSON_CONTENT_TYPE)
      .withTime(Instant.now().atOffset(ZoneOffset.UTC))
      .withData(PojoCloudEventData.wrap(dummyEvent, objectMapper::writeValueAsBytes))
      .build();

kafkaTemplate.send("dummy-topic", "dummy-unique-id", cloudEvent);

共 (0) 个答案