当前位置:首页 > 内存 > 正文

内存队列和消息队列

  • 内存
  • 2024-06-01 10:58:43
  • 2379

一、消息队列概念

消息本质上是一种数据结构(当然对象也可以认为是一种特殊的消息)。它包含消费者和服务都可以识别的数据。这些数据需要根据不同的流程进行处理。(机器)相互传递,可以被许多完全不同的客户端使用

队列是先进先出(FIFO,First-In)线性表-First-Out),常见队列是按排序顺序等待接收服务或处理的一组人或物

本地队列根据其特点可以分为初始队列、传输队列、目标队列和死信队列。功能。初始化队列用作消息触发函数。传输队列只是暂时存储要传输的消息,当条件允许时,消息通过管道传输到其他队列管理器。目的队列是消息的目的地,可以长时间存储消息。如果消息无法投递到目标队列且无法路由出去,则会自动放入死信队列进行存储。

它只是一个队列定义,用于指定远程队列管理器的队列。使用远程队列,程序不需要知道目标队列的位置。

模型队列定义了一组本地队列属性。当模型队列打开时,队列管理器会根据这些属性自动创建本地队列。

MQ全称(MessageQueue),又称消息队列,是一种异步通信中间件。可以理解为,发件人将信件发送给邮局,那么邮局会帮我们将信件发送给特定的收件人(消费者)。时间也不会影响我的其他事情。

广泛应用于跨平台、多系统的分布式系统,为其提供高效可靠的异步传输机制

JMS(JavaMessageService,java消息服务)是Java的JMS消息传递服务是一组API,它们是j2EE标准的一部分。

JMS是Sun公司早期提出的一个消息传递标准,旨在为Java应用程序提供统一的消息传递操作,包括创建、发送、接收等。

JMS是Java企业版。从使用角度来看,JMS和JDBC扮演着相似的角色。用户可以根据相应的接口与JMS实现服务进行通信并执行相关操作

结构图

说明

使用队列作为消息通信媒介;满足生产者和消费者模型,一条消息只能被一个消费者消费,未使用的消息会保留在队列中,直到消费完毕或超时等待时间。例如:如果我们的生产者发送了100条消息,并且有两个消费者消费了它,那么通常这两个消费者会按照发送的顺序消费一半的消息(即你消费一条,我消费一条)

结构图

说明

发布订阅(Pub/Sub)模型使用主题(Thread)作为消息通信媒介,类似于广播模式;发布一条消息,并将消息传输的Topic发送给所有订阅者。消息广播后注册的用户将不会收到该消息。

AMQP(高级消息队列协议)是提供统一消息服务的应用层标准协议。基于该协议的消息客户端和中间件可以发送消息,并且不受不同客户端/中间件产品的影响,并且具有可扩展性。语法开发

AMQP是一种协议,更准确地说是一种二进制线路级协议(链接协议),与JMS兼容