【问题标题】:Consumer to trigger api based on the messages sent by producer消费者根据生产者发送的消息触发api
【发布时间】:2021-08-30 15:08:12
【问题描述】:

我使用 spring 创建了一个消费者和生产者类。现在我希望消费者根据生产者发送的消息触发一些 api。怎么做? 请在 JAVA SpringBoot 中提供解决方案。 如何从消费者的application.yml中触发一个api?

@Service
public class KafkaConsumer{
   
    @KafkaListener(topics="mytopic", groupID="mygroup")
    public void receive(String message, Acknowledgement acknowledgement)){
           System.out.println("Consumer message "+ message);
    }
    // when I add @postMapping here then it gives error. 
    // How can I send a post request on the basis of message recieved?
}

【问题讨论】:

  • 您好,欢迎来到 Stackoverflow。关于您的问题 - 基于生产者发送的消息 - 这是 Kafka 消费者的定义。 Stackoverflow 不适用于查找异地教程,您在其他地方找到的任何教程都应该可以解决您的问题,从官方 Spring-Kafka / Spring-Integration-Kafka / Spring-Cloud-Streams 文档开始,那么 exact 你有什么问题吗?
  • 我已经正确地制作了 kafka 生产者和消费者,并且消息正在正确发送和接收。但是,我想根据收到的消息在我的消费者中触发 API。那么该怎么做呢?我搜索了许多教程,但找不到任何东西@OneCricketeer
  • 不清楚您所说的“触发 API”是什么意思。如果您能够接收消息,您可以调用任何您想要的方法...您能否将您的问题 edit 以将您当前的代码包含为 minimal reproducible example
  • 现在请检查问题。请帮忙。我被困了几个小时。 @OneCricketeer

标签: java spring-boot apache-kafka


【解决方案1】:

当我在此处添加@postMapping 时会报错

您只能在处理传入请求的 REST 服务器方法上添加该注释。

您正在尝试进行传出 HTTP 调用,那么您需要使用您选择的 HTTP 客户端或 Spring RestTemplate

如果您尝试调用任何内部 HTTP 端点,则应重构代码以调用与 HTTP 资源交互的相同类的方法。

【讨论】:

  • 非常感谢,我会研究 Rest Template 并添加它。只是一件小事,那个 Rest Template 将如何帮助我从 application.yml 获取项目?
  • 它没有。您的 YAML 属性中的数据不可从 HTTP 获得。至少,默认情况下不是。
  • 哦,好的。那么我应该如何根据该 application.yml 返回字符串?
  • 您将使用@Value 注释将字段绑定到配置值。 docs.spring.io/spring-boot/docs/current/reference/htmlsingle/… 或者您可以绑定@Autowired private Environment env; 字段,然后使用env.getProperty 从文件中查找任何属性。
猜你喜欢
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
相关资源
最近更新 更多