专业的JAVA编程教程与资源

网站首页 > java教程 正文

SpringBoot消息队列

temp10 2024-11-18 17:09:36 java教程 13 ℃ 0 评论

1.了解消息队列 1.消息服务

消息服务是用于访问企业消息系统的标准API。 消息中间件用于实现消息传递和通用消息中间件。

SpringBoot消息队列

信息服务。 企业消息传递系统可以协调网络上应用程序之间的消息交换。

JMS,Java Message Service,是Java平台中面向消息中间件的API。 它用于在两个应用程序之间或在分布式系统中发送消息以进行异步通信。 JMS 所扮演的角色与 JDBC 非常相似。 正如 JDBC 提供了一组用于访问各种关系数据库的公共 API 一样,JMS 也为企业消息传递系统提供了独立于供应商的访问方法。

2.常用消息中间件(一)ActiveMQ

ActiveMQ 是一个完全基于消息的队列,由 Apache 软件基金会制作,并用 Java 语言编写。”

基于JMS标准、面向消息的中间件,为应用程序提供高效、可扩展、稳定、安全的企业消息队列和消息通信。 ActiveMQ丰富的API和多种集群构建模式使其成为业界的“老手”。

软件,广泛应用于中小企业。

(2)RabbitMQ

RabbitMQ是一个使用Erlang语言开发并基于AMQP(高级消息队列协议)实现的开源消息队列系统。 AMQP是一种应用层标准的高级消息队列协议,提供统一的消息服务来应对大规模并发活动。 它是专门为面向消息的中间件设计的。 该协议更常用于对数据一致性、稳定性、可靠性要求较高的企业系统,对性能和吞吐量的要求是次要的。

3.RabbitMQ的安装

由于RabbitMQ服务器代码是使用并发语言Erlang编写的,因此在安装RabbitMQ之前需要安装Erlang。

(1)安装Erlang

我们可以从官网下载下载Erlang的最新版本和之前的旧版本。

(2)设置环境变量

打开“编辑环境变量”对话框,新建变量ERLANG_HOME,值为Erlang所在路径,然后修改环境变量Path,将Erlang变量添加到Path中,值为“%ERLANG_HOME%\binl” , 例如

如图6-3所示,设置完成后单击“确定”按钮。

打开cmd命令框,输入erl。 显示Erlang版本信息,表示配置成功。 这样,Erlang的安装就完成了。

(3)安装RabbitMQ

在RabbitMQ官网Get Started处打开下载界面。

打开“编辑环境变量”对话框,新建变量RABBITMQ_SERVER,值为RabbMQ对应的路径。

修改环境变量Path,将RabbitMQ变量添加到Path中,值为“%RABBITMQ_SERVER%sbin”

然后单击“确定”按钮。

在cmd命令框中输入命令,进入RabbitMQ下的sbin文件夹,执行命令rabbitmq-plugins.bat启用rabbitmq_management。

在浏览器中访问localhost:15672即可访问RabbMQ服务。

至此,RabbitMQ安装完成。

二、使用RabbitMQ实现消息队列一、RabbitMQ简介

RabbitMQ 是一个开源消息代理软件(也称为面向消息的中间件),它实现了高级消息队列协议(AMQP)。 它是消费者-生产者模式的典型代表。 一端不断向消息队列写入消息,另一端则可以读取队列中的消息。 RabbitMQ是用Erlang编写的,所有主要编程语言都有与代理接口通信的客户端库。 RabbitMQ支持主流操作系统,如Linux、Windows、MaxOX等,支持多种开发语言,如Java、Python、Ruby等。

RabbitMQ广泛应用于许多应用场景。 以下是一些典型的应用场景:

异步处理:通过使用RabbitMQ,可以将任务异步发送到消息队列,并由消费者异步处理,从而实现系统解耦和高并发处理。 例如,订单系统可以将订单数据发送到消息队列,由库存系统和支付系统异步处理。 任务调度:RabbitMQ可用于任务调度,如定时任务、批量任务等,通过将任务发送到消息队列,可以实现任务的异步处理,并可以通过设置消息优先级等属性来实现任务调度和超时。 消息通知:在分布式系统中,各个模块之间需要相互通信,例如用户注册、支付成功、物流状态等。通过使用RabbitMQ,可以将消息发送到消息队列,由消息队列接收并处理消费者实现消息通知功能。 日志处理:RabbitMQ可用于日志处理,如日志采集、日志分析等,通过向消息队列发送日志消息,可以实现日志的异步处理,通过设置message可以实现不同类型的日志处理属性、路由规则等。 实时数据处理:RabbitMQ还可以用于实时数据处理,比如数据流分析、实时统计等。通过将数据发送到消息队列,实时处理并可实现数据分析。 分布式事务:在某些场景下,可能需要分布式事务来保证多个系统之间的数据一致性。 RabbitMQ可以通过实现消息的可靠传递和事务操作来支持分布式事务的实现。 事件驱动架构:在事件驱动架构中,各个系统通过事件进行通信。 RabbitMQ作为事件总线,可以用来实现系统间的松耦合和异步通信。 测试和调试:RabbitMQ的发布/订阅模型和排队机制可用于测试和调试应用程序。 例如,RabbitMQ可以用来模拟实际的生产环境,进行负载测试和性能测试等。 可扩展性:由于RabbitMQ支持分布式和可扩展的消息传递,因此可以帮助实现高度可扩展的应用程序。 负载均衡和水平扩展可以通过将消息路由到多个队列或消费者来实现。 可靠性:RabbitMQ提供了多种机制来保证消息的可靠传递。 例如,使用消息持久化、确认机制和重试策略来确保消息不丢失或不重新传递。 2.RabbitMQ运行机制

(1)Work Queues(工作队列模式)

(2)Publish/Subscribe(发布订阅模型)

(3)Routing(路由模式)

(4)主题(通配符模式)

3.RabbitMQ添加并绑定交换机

(1)配置RabbitMQ

在路由模式下,发挥作用的交换机是直接交换机。 将属性Name设置为“exchange.direct”,Type设置为“direct”,Durability设置为“Durable”,表示RabbitMQ重启后当前交换器仍然存在。

设置完成后点击“添加”跳转至下图

其余两个交换器的添加方式相同,只是exchange.fanout交换器的Type为“fanout”,exchange.topic交换器的Type为“topic”。

添加三个开关后,在RabbitMQ中显示如下:

接下来,添加消息队列。 路由模式下,一共有4个消息队列。 首先添加Queue1队列。 具体添加方法如图:

使用同样的方法添加剩余的三个队列,分别命名为queue1.emps、queue1.news和queue2。 四个队列添加完成后,在RabbitMQ中显示如下:

通过以上步骤就完成了交换机和队列的添加。 交换器需要绑定对应的队列。

首先对exchange.direct交换器进行排队,然后使用exchange.direct交换器绑定队列queue1,并设置routing key为queue1。 独立的“Bind”按钮出现如图所示:

至此,队列与exchange.direct交换器的绑定就完成了。 Exchange.fanout交换器以同样的方式绑定4个队列。

通过以上步骤,就完成了交换机和队列的添加和绑定。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表