前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Spring Cloud Bus在服务之间传递自定义事件(一)

Spring Cloud Bus在服务之间传递自定义事件(一)

原创
作者头像
堕落飞鸟
发布于 2023-04-15 23:49:27
发布于 2023-04-15 23:49:27
65600
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

Spring Cloud Bus是Spring Cloud生态系统中的一个组件,用于在分布式系统中传递消息和事件。除了提供消息总线的基本功能之外,它还可以用于在服务之间传递自定义事件。

自定义事件

Spring Framework中,我们可以使用ApplicationEvent来创建自定义事件。为了演示如何在Spring Cloud Bus中传递自定义事件,我们创建了一个名为MyCustomEvent的自定义事件。代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MyCustomEvent extends ApplicationEvent {

    private final String message;

    public MyCustomEvent(Object source, String message) {
        super(source);
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}

在这个自定义事件中,我们简单地将消息作为一个String类型的属性添加到事件中。

生产者

为了在Spring Cloud Bus中传递自定义事件,我们需要一个生产者应用程序,该应用程序将触发自定义事件并将其发送到Spring Cloud Bus上。在这个示例中,我们将使用Spring Cloud Bus来连接两个应用程序,这两个应用程序都是使用Spring Cloud Config从同一个配置服务器获取它们的配置。我们使用Spring Cloud Config作为我们的配置服务器,因为它已经为我们集成了Spring Cloud Bus。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ProducerApplication {

    private static final Logger LOGGER = LoggerFactory.getLogger(ProducerApplication.class);

    @Autowired
    private ApplicationEventPublisher publisher;

    @Value("${spring.application.name}")
    private String appName;

    @PostMapping("/sendMessage")
    public void sendMessage(@RequestParam String message) {
        LOGGER.info("Sending message: {}", message);
        publisher.publishEvent(new MyCustomEvent(this, message));
    }

    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }
}

在这个生产者应用程序中,我们使用ApplicationEventPublisher来发布MyCustomEvent事件。我们定义了一个名为sendMessage的REST API来触发这个事件,该API接收一个名为message的字符串参数。

消费者

现在,我们需要一个消费者应用程序来接收这些自定义事件。在这个示例中,我们将使用Spring Cloud Stream来创建一个名为ConsumerApplication的消费者应用程序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {

    private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerApplication.class);

    @Value("${spring.application.name}")
    private String appName;

    @StreamListener(target = Sink.INPUT, condition = "headers['type']=='myCustomEvent'")
    public void handleMyCustomEvent(MyCustomEvent event) {
        LOGGER.info("Received MyCustomEvent: {}", event.getMessage());
    }

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

在这个消费者应用程序中,我们使用@StreamListener注释来监听Spring Cloud Stream通道上的消息。我们定义了一个名为handleMyCustomEvent的方法来处理接收到的MyCustomEvent事件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Cloud Bus在服务之间传递自定义事件(二)
最后,我们需要为Spring在 Spring Cloud Bus 中,我们还可以发送自定义事件,这些事件将被传递给所有订阅者,订阅者可以监听并进行处理。
堕落飞鸟
2023/04/16
4290
使用 Spring Cloud Bus 在微服务之间传递消息示例
下面是一个完整的示例,演示如何使用 Spring Cloud Bus 在微服务之间传递消息。该示例包含两个微服务,一个是消息发送者,另一个是消息接收者。
堕落飞鸟
2023/04/18
1.3K3
使用 Spring Cloud Bus 在微服务之间传递消息
Spring Cloud Bus 是 Spring Cloud 微服务框架中的一个组件,可以用于在微服务之间传递消息,从而实现微服务之间的协调和通信。
堕落飞鸟
2023/04/18
7080
Spring Cloud Bus使用自定义的消息转换器(三)
现在,我们可以使用自定义消息转换器来发送和接收消息。我们将使用之前的POST请求来发送一条JSON格式的消息。然后,我们将使用自定义消息转换器来将该消息转换为XML格式,并将其发送到消息代理。我们将在另一个服务中接收该消息,并使用自定义消息转换器将其转换回JSON格式。下面是代码示例:
堕落飞鸟
2023/04/16
4880
Spring Cloud 系列之消息驱动 Stream
  在一个系统中我们可能包含前端页面、接口服务、大数据层,可能在接口服务中使用的是 RabbitMQ 而在大数据层中使用的是 Kafka,那么我只会 RabbitMQ 不会 Kafka 岂不是还要去学习,白天 996 晚上 007 简直要命。那么有没有一个像 JDBC 一样的能够屏蔽细节让我们可以迅速切换。   Spring Cloud Stream 是一个构建消息驱动微服务应用的框架。它基于 Spring Boot 构建独立的、生产级的 Spring 应用,并使用 Spring Integration 为消息代理提供链接。应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中 binder 交互,通过我们配置来 binding ,而 Spring Cloud Stream 的 binder 负责与中间件交互。所以,我们只需要搞清楚如何与 Spring Cloud Stream 交互就可以方便使用消息驱动的方式。 Spring Cloud Stream 为一些供应商的消息中间件产品提供了个性化的自动化配置实现,引用了发布-订阅、消费组、分区的三个核心概念。目前只实现了 Kafka 和 RabbitMQ 的 Binder。
Demo_Null
2020/11/24
1.4K0
Spring Cloud 系列之消息驱动 Stream
Spring Cloud Stream 重点与总结
原本想开个Spring Cloud Stream系列文章连载,写Spring Cloud Stream算是个人夙愿了——首先这是个人非常喜欢的组件,它屏蔽了各种MQ的差异,统一了编程模型(可以类比成基于MQ通信圈的”Spring Data”);其次个人实体书《Spring Cloud 与 Docker 微服务架构实战》没有包含这部分内容也是一大遗憾;更重要的是,这货细节其实挺多,而且上手是稍微有一点曲线的。
用户1516716
2019/05/13
2.5K0
使用 Spring Cloud Bus 和 Spring Cloud Stream 集成实现基于消息的事件驱动
基于消息的事件驱动是一种常见的微服务架构设计模式,它将不同的微服务之间通过消息进行通信,实现松耦合、高可伸缩性和高可靠性。在这种架构下,每个微服务都是独立的,它们可以在消息传递的过程中进行异步操作,这使得整个系统的性能得到了很大的提升。
堕落飞鸟
2023/04/18
9670
Spring Cloud Stream知识点盘点
•Spring Cloud Stream实现消息过滤消费•Spring Cloud Stream 错误处理详解
用户1516716
2019/08/13
1K0
Spring中的事件
文章目录 1. 简介 2. 事件 2.1. Spring中内置的事件 2.2. 自定义事件 3. 监听器 3.1. 实现ApplicationListener接口 3.2. 使用@EventListener注解 4. 事件发布 4.1. Spring的事件发布类 4.2. 直接注入 4.3. 使用ApplicationEventPublisherAware注入 5. 事件多播器 6. 异步事件 6.1. 使用@Async实现异步 6.2. 自定义事件多播器 7. 源码解析 简介 学过编程语言的肯定知道事
爱撒谎的男孩
2019/12/31
1.3K0
Spring源码浅析——事件和异步事件
观察者模式(Observer Pattern)是一种设计模式,用于在对象之间定义一种一对多的依赖关系,以便当一个对象的状态发生变化时,所有依赖于它的其他对象都能够自动接收通知并做出相应的处理。
用户1413827
2023/11/28
3710
Spring Boot 自定义事件
系统启动时,执行顺序为:application starting > application prepared > application ready
吟风者
2019/08/15
1.1K0
Spring Boot 自定义事件
Spring Cloud Bus与Spring Cloud Stream的关系示例
这些依赖将启用 Spring Cloud Bus 和 Spring Cloud Stream,并将其配置为使用 RabbitMQ 作为消息代理。
堕落飞鸟
2023/04/15
5690
Spring Cloud Bus中的事件的订阅与发布(二)
在之前的文章Spring Cloud Bus中的事件的订阅与发布(一)介绍了消息总线的相关事件。本文主要介绍消息总线的事件监听器以及消息的订阅与发布。 事件监听器 Spring Cloud Bus中,
aoho求索
2018/04/03
1.8K0
Spring Cloud Bus中的事件的订阅与发布(二)
Spring事件
事件是框架中被忽视的功能之一,但也是非常有用的功能之一,并且像Spring中的许多其他能力一样,事件发布是ApplicationContext上下文提供的功能之一。
叔牙
2020/11/19
7920
Spring事件
Spring Cloud Bus在服务之间发送和接收消息(一)
在微服务架构中,服务之间的通信非常重要。在某些情况下,我们需要在服务之间发送和接收消息,以实现更高效、可靠的通信。这时,Spring Cloud Bus 是一个非常有用的工具。
堕落飞鸟
2023/04/15
1.9K0
Spring 中的事件机制,芳芳用过都说好~
在我们日常业务开发中,观察者模式对我们很大的一个作用,在于实现业务的解耦。以用户注册的场景来举例子,假设在用户注册完成时,需要给该用户发送邮件、发送优惠劵等等操作,如下图所示:
芋道源码
2020/11/16
7420
Spring 中的事件机制,芳芳用过都说好~
如何做到业务优雅解耦?
在现代应用程序中,各个组件之间的通信是至关重要的。想象一下,你的应用程序中的各个模块像是一个巨大的交响乐团,每个模块都是一位音乐家,而Spring事件机制就像是指挥家,将所有音乐家协调得天衣无缝。
架构狂人
2024/03/06
1560
如何做到业务优雅解耦?
干货|Spring Cloud Bus 消息总线介绍
本期我们来了解下 Spring Cloud 体系中的另外一个组件 Spring Cloud Bus (建议先熟悉 Spring Cloud Stream,不然无法理解 Spring Cloud Bus 内部的代码)。
用户1516716
2019/07/10
1.1K0
Spring Cloud Bus监听服务配置的变化并自动通知其他服务(二)
Spring Cloud Bus提供了一种自动通知服务配置变化的机制。当配置中心中的配置发生更改时,Spring Cloud Bus会自动通知应用程序,告诉它们需要重新加载最新的配置信息。这种机制可以大大简化应用程序的配置管理,并提高系统的可用性。
堕落飞鸟
2023/04/16
6020
Spring Event 业务解耦神器,刷爆了
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/07/26
7040
Spring Event 业务解耦神器,刷爆了
相关推荐
Spring Cloud Bus在服务之间传递自定义事件(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文