当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Stream3.x中不推荐EnableBinding

池俊茂
2023-03-14

我用Kafka做一个微服务项目。每当我将记录保存到数据库时,我希望调用一个事件。我一直在看关于春云流的教程。它们都使用@enableBinding、@input、@output注释。当我试图使用它们时,它说它们是不推荐的。我使用的是spring InitialZR。发布说明说,我应该使用供应商、消费者和函数,而不是像输入、输出和过程这样的旧方法。

@Bean
public Supplier<String> toUpperCase() {
    return () -> {
        return "hello from supplier";
    };
}

当我使用这样的供应商时,它每秒钟都会生成消息,因为它也在教程中突出显示。我不想让它每秒钟都出版。我希望它在我想出版的时候出版。它说我应该调用它的get()方法,但我不知道如何调用。教程使用不推荐的函数来实现这样的功能。我怎样才能在没有被否决的函数的情况下实现这样的行为,或者我怎样才能在不说它被否决的情况下使用EnableBinder注释?

共有1个答案

孟沛
2023-03-14

您可以在https://github.com/habeebcycle/spring-cloud-stream-implemention查看我的演示项目的repo

它展示了如何使用RabbitMQ和Kafka为供应商和消费者实现云流,以及两个服务的端到端测试。

对于您的情况:在您的供应商bean中,执行如下操作:

@Bean
public Supplier<DataEvent<String, User>> savedMessage() {
    return () -> {
        return null;
    };
}
private final StreamBridge stream;
private final UserRepository repo;

// Store your topic/binding name as the supplier name as follows
private static final String SUPPLIER_BINDING_NAME = "savedMessage-out-0"

public UserService(UserRepository repo, StreamBridge stream) {
   this.repo = repo;
   this.stream = stream;
}

// Your save method
public void saveUser(User user) {
  // Do some checking...

  //save your record
  User user = repo.save(user);
  
  //check if user is saved or not null
  //create your message event (Assuming you have a DataEvent class)
  DataEvent<String, User> event = new DataEvent<>("User Saved", user);
  boolean sent = stream.send(SUPPLIER_BINDING_NAME, event));

  // Check the repo above for proper implementation.
}

您还可以在以下位置查看GitHub上的Spring最近的项目https://GitHub.com/spring-cloud/spring-cloud-stream-samples/

 类似资料:
  • 一、获取HBuilder X HBuilder X 官方下载地址 HBuilderX:官方IDE。建议下载App开发版,如下载标准版,还需在插件管理中安装uni-app插件。 HX是轻量编辑器和强大IDE的完美结合体。敏捷的性能,清爽的界面,强大的功能和于一身。 1. 介绍 执着于更快一步的理念,hx的左侧项目管理器是单击响应而不是双击。 单击展开目录,单击预览文件,双击打开文件。 预览文件时顶部

  • 在过去的2-3天里,我已经用weblogic+JTA使Spring4.x、Hibernate4.x与weblogic+JTA一起工作 我需要(我认为我需要)配置的东西之一是: 我在hibernate-hibernate-3.1.3.jar 中看到了这个类,但在hibernate-hibernate-core-4.3.10.final.jar中没有看到这个类 谷歌没有告诉我任何事情,我得到的只是3.

  • 我收到此错误,并且尝试将更改为仍然收到不同的错误。

  • 问题内容: 我收到此警告,但是该程序仍然可以正常运行。 MySQL代码向我显示了一条PHP消息: 不推荐使用:mysql_connect():不推荐使用mysql扩展,以后将被删除:在第2行的C:\ xampp \ htdocs \ task \ media \ new \ connect.inc.php中使用mysqli或PDO代替 我的页面是 这是什么意思,我该如何消除该消息? 问题答案: 有

  • 问题内容: 我正在尝试使用和进行单元测试。 当我不包含注释时,测试将失败。但 不推荐使用MockitoJUnitRunner类型 我正在使用Mockito 2.6.9。我应该怎么做? 问题答案: 现在确实已弃用,应该改为使用。如您所见,仅软件包名称已更改,该类的简单名称仍为 。 摘录自javadoc : 移至,该课程将在Mockito 3中删除

  • 新的侦听器(又名OnCameraMoveListener())方法onCameraMove()没有CameraPosition CameraPosition输入变量,所以我很迷惑:有没有方法回收我的旧代码? 这里有一些参考资料。