当前位置: 首页 > news >正文

做网站标签栏的图片大小网易暴雪最新消息

做网站标签栏的图片大小,网易暴雪最新消息,产品市场推广方案,检索网站怎么做引言 在现代分布式系统中,消息队列和事件总线已经成为实现松耦合、高扩展性和高可用性架构的关键组件。无论是微服务架构、事件驱动架构,还是实时数据处理,消息队列和事件总线都扮演着至关重要的角色。本文将深入探讨Java中的分布式消息队列…

引言

在现代分布式系统中,消息队列和事件总线已经成为实现松耦合、高扩展性和高可用性架构的关键组件。无论是微服务架构、事件驱动架构,还是实时数据处理,消息队列和事件总线都扮演着至关重要的角色。本文将深入探讨Java中的分布式消息队列与事件总线的概念、实现方法、技术选型以及实际应用中的最佳实践,附带代码示例以便读者更好地理解。

什么是分布式消息队列和事件总线?

分布式消息队列

分布式消息队列是一种为分布式系统提供异步通信机制的中间件。它允许系统中的不同组件通过发送和接收消息进行交流,从而实现高效的数据传输和任务调度。

常见用途:
  • 任务调度和执行
  • 数据流处理
  • 系统解耦
  • 事件驱动架构
事件总线

事件总线是一种发布-订阅模型的实现,允许不同组件订阅和发布事件。事件总线可以在同一进程中运行,也可以跨多个分布式系统运行。

常见用途:
  • 事件通知
  • 事件驱动编程
  • 系统解耦
  • 实时数据处理

常见技术选型

技术类型优点缺点
RabbitMQ消息队列高性能、强大的路由功能、良好的社区支持配置复杂,学习曲线陡峭
Apache Kafka消息队列高吞吐量、持久化、分布式特点配置和管理复杂,低延迟不适合实时应用
ActiveMQ消息队列易于使用、功能齐全性能和扩展性不如Kafka和RabbitMQ
Apache Pulsar消息队列多租户、支持Geo-replication较新的技术,社区和文档相对较少
Spring Cloud Bus事件总线易于集成Spring生态系统主要适用于Spring项目,通用性较差
Vert.x Event Bus事件总线轻量级、高性能、灵活对于大型分布式系统,可能需要自定义扩展

实现分布式消息队列

使用RabbitMQ实现消息队列

配置RabbitMQ

首先,确保RabbitMQ服务在本地或远程服务器上运行。可以通过Docker快速启动RabbitMQ:

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management

添加依赖

在你的pom.xml文件中添加RabbitMQ客户端的依赖:

<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.13.0</version>
</dependency>

生产者代码

import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;public class Producer {private final static String QUEUE_NAME = "hello";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) {channel.queueDeclare(QUEUE_NAME, false, false, false, null);String message = "Hello World!";channel.basicPublish("", QUEUE_NAME, null, message.getBytes());System.out.println(" [x] Sent '" + message + "'");}}
}

消费者代码

import com.rabbitmq.client.*;public class Consumer {private final static String QUEUE_NAME = "hello";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) {channel.queueDeclare(QUEUE_NAME, false, false, false, null);System.out.println(" [*] Waiting for messages. To exit press CTRL+C");DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [x] Received '" + message + "'");};channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });}}
}

实现事件总线

使用Spring Cloud Bus实现事件总线

添加依赖

在你的pom.xml文件中添加Spring Cloud Bus和RabbitMQ的依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>

配置文件

application.yml中配置RabbitMQ连接信息:

spring:cloud:bus:enabled: truerabbitmq:host: localhostport: 5672

事件发布者

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.bus.event.RemoteApplicationEvent;
import org.springframework.cloud.bus.SpringCloudBusClient;
import org.springframework.cloud.bus.event.EnvironmentChangeRemoteApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class EventPublisherController {@Autowiredprivate ApplicationEventPublisher applicationEventPublisher;@PostMapping("/publish-event")public String publishEvent() {applicationEventPublisher.publishEvent(new EnvironmentChangeRemoteApplicationEvent(this, "source", null));return "Event published";}
}

事件监听器

import org.springframework.cloud.bus.event.EnvironmentChangeRemoteApplicationEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;@Component
public class EventListenerComponent {@EventListenerpublic void onEnvironmentChange(EnvironmentChangeRemoteApplicationEvent event) {System.out.println("Received event: " + event);}
}

总结

本文详细介绍了分布式消息队列和事件总线的概念、常见技术选型以及在Java中的实现方法。通过RabbitMQ和Spring Cloud Bus的代码示例,展示了如何在实际应用中使用这些技术来实现异步通信和事件驱动架构。

http://www.yayakq.cn/news/589497/

相关文章:

  • 手机网站按那个尺寸做在线国内免费crm
  • 网站推广途径方法沈阳微信网站开发
  • 如何查看一个网站是不是用h5做的温州网站建
  • 服务器可以放几个网站wordpress 加载太多js
  • 建立网站专业公司成品网站源码在线
  • 建设银行网站 查余额查询久久建筑网 围栏工程专项施工方案
  • 自己做的网站能备案吗成都网站建设 平易云
  • 龙岗网站设计公司网站建设与制作总结
  • 如何做网站首页在网站用什么做页面布局
  • 接入网站备案要多久网站开发部门叫什么
  • 温州做网站软件自己做流媒体网站难
  • 网站建设开发综合实训报告5万左右的新能源电动汽车
  • 网站开发实战asp制作视频河南物流最新情况
  • 注册个免费网站外链购买平台
  • 全国大型免费网站建设自适应网站建设公司
  • 重庆亮哥做网站photoshop下载免费版
  • 电子商务网站建设新闻江苏城乡建设部网站
  • 标题优化方法seo网站推广推荐
  • 企业手机网站建设教程WordPress快捷登录如何关闭
  • 宁波公司做企业网站校园网站建设的请示
  • 网站全屏弹出窗口分切机网站建设
  • python网站开发框架晋中企业网站建设
  • 湖州童装网站自助做网站
  • 网站建设与维护课件wordpress 网站内跳转
  • 镜像别人网站做排名的好处昆山的网站建设
  • 网站开发的疑虑青岛制作网站软件
  • 互联网网站案例室内设计平面图案例
  • 网站二级域名建站属于子站吗天津网站建设58
  • 网站短片怎么做网站源码什么意思
  • 做网站用的语言商梦建站