lagom用kafka发布消息

w6lpcovy  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(816)

这里只描述了一种发布方式。还有别的办法吗?我需要使用动态主题id和自定义事件生成一个发布,而不使用persistententityregistry的示例是什么?如何使用eventid发布事件?

@Override
  default Descriptor descriptor() {
    return named("helloservice").withCalls(
        pathCall("/api/hello/:id",  this::hello),
        pathCall("/api/event/:id", this::pushEventWithId) // id - eventId
      )
      .withTopics(
        topic(GREETINGS_TOPIC, this::greetingsTopic)
      )
      .withAutoAcl(true);
  }

正在处理请求。

public ServiceCall<RequestMessage, NotUsed> pushEventWithId(String eventId) {
    return message -> {
        // Here I need push this message to kafka with eventId. Another service should be subscribed on this eventId

    }
}

lagom版本:1.3.10

vsaztqbk

vsaztqbk1#

目前不支持此操作。您可以自己直接示例化kafka客户机(这并不难做到),以便像那样强制发布消息。
虽然将来会增加对强制发布消息的支持,但lagom还没有增加支持的一个原因是,当人们想要这样做时,他们通常会在系统中引入反模式,例如不一致的机会。例如,如果您的服务更新了某个数据库,然后向kafka发布了一条消息,那么您就遇到了一个问题,因为如果数据库更新成功,但消息发布失败,那么什么也得不到该更新,并且您的系统将处于不一致的状态。本演示文稿详细介绍了这是一个问题的原因,以及从事件日志发布事件是如何解决这个问题的。

相关问题