RabbitMQ

6、RabbitMQ配置 一般情况下,RabbitMQ提供的默认内建配置就能满足要求了,但是为了更好控制RabbitMQ,有时也需要做一些定制化配置。 RabbitMQ提供三种配置方式: 环境变量; 配置文件; 运行时参数和策略; 一、环境变量 RabbitMQ的环境变量都是以”RABBITMQ_”开头的,可以在shell环境中直接配置,也可以在rabbitmq-env.conf这个RabbitMQ环境变量的定义文件中... 阅读详情

RabbitMQ 是一个强大的消息队列系统,基于 AMQP(高级消息队列协议),广泛应用于各种分布式系统中。

RabbitMQ 组件

生产者(Producer)
  • 生产者是发送消息的应用程序,它将消息发送到 RabbitMQ 的交换机(Exchange)。
  • 生产者可以选择指定路由键(routing key),用于决定消息应该被发送到哪个队列。
交换机(Exchange)
  • 交换机是消息的路由器,负责将生产者发送的消息根据路由规则分发到相应的队列。
  • 交换机类型决定了消息路由的行为,RabbitMQ 提供四种类型的交换机:
    • Direct Exchange: 根据路由键将消息精确地路由到绑定该交换机的队列。
    • Fanout Exchange: 将消息广播到所有绑定的队列,忽略路由键。
    • Topic Exchange: 支持使用通配符进行模式匹配,将消息路由到一个或多个队列,基于路由键。
    • Headers Exchange: 根据消息头部信息进行路由,而不是路由键。
队列(Queue)
  • 队列是存储消息的容器,消息在队列中等待消费者处理。
  • 每个队列都有一个唯一的名称,生产者和消费者通过这个名称进行通信。
  • 队列可以设置为持久化,以确保在 RabbitMQ 服务器重启时消息不会丢失。
消费者(Consumer)
  • 消费者是接收和处理消息的应用程序,从队列中取出消息并进行处理。
  • 消费者可以选择同步(拉取)或异步(推送)方式来接收消息。
Broker
  • RabbitMQ 服务器本身被称为 Broker,负责处理消息的接收、存储和转发。

RabbitMQ 消息传递模型

RabbitMQ 的消息传递模型基于以下几个关键概念:

消息
  • 消息是通过 RabbitMQ 进行传递的数据单元,可以包含任意数据(如 JSON、XML、文本等)。
  • 消息可以设置属性(如路由键、头信息、过期时间等)。
路由键(Routing Key)
  • 路由键是生产者发送消息时指定的标识符,交换机使用路由键决定消息的去向。
  • 在 Direct 和 Topic 交换机中,路由键是重要的路由依据。
绑定(Binding)
  • 绑定是将交换机和队列关联起来的关系,允许交换机将消息路由到特定的队列。
  • 可以在绑定时指定路由键,以实现更精确的消息路由。
交换机类型
  • Direct Exchange:
    • 消息路由到绑定到该交换机且路由键完全匹配的队列。
  • Fanout Exchange:
    • 消息广播到所有绑定的队列,路由键被忽略。
  • Topic Exchange:
    • 消息根据路由键的模式进行路由,支持通配符(* 表示一个单词,# 表示零个或多个单词)。
  • Headers Exchange:
    • 通过消息的头部信息进行路由,路由键被忽略,支持复杂的路由逻辑。

工作原理

消息流转过程
  1. 生产者发送消息:
    • 生产者将消息发送到交换机,通常需要指定交换机名称和路由键。
  2. 交换机路由消息:
    • 交换机根据其类型和路由键将消息路由到一个或多个队列。
  3. 队列存储消息:
    • 消息存储在队列中,直到消费者消费它。
  4. 消费者获取消息:
    • 消费者从队列中拉取消息或接收推送消息,进行处理。
  5. 消息确认:
    • 消费者处理完消息后,发送确认消息(ACK)给 RabbitMQ,表明消息已被成功消费。
  6. 消息重新入队:
    • 如果消费者未确认消息,RabbitMQ 会将该消息重新放回队列,确保消息不丢失。
消息持久化
  • RabbitMQ 支持消息持久化,即将消息存储到磁盘,防止 RabbitMQ 服务崩溃时丢失消息。
  • 为了实现持久化,生产者需要将消息标记为持久化(设置消息的 delivery_mode 为 2),并将队列声明为持久化。

如何保证消息不丢失

发送者消息不丢失

持久化消息: 在发送消息时,生产者可以将消息设置为持久化,通过将 delivery_mode 属性设置为 2,这样即使 RabbitMQ 服务器崩溃,持久化的消息依然会被保存

持久化队列:队列本身也应声明为持久化(durable),确保队列在 RabbitMQ 重启时仍然存在

确认机制(Publisher Confirms)

  • 开启消息确认 :RabbitMQ 支持生产者确认机制(Publisher Confirms),这允许生产者在发送消息后接收确认(ACK),以确保消息已成功到达 RabbitMQ。
  • 启用确认机制:在发送消息之前,需要将通道设置为确认模式。RabbitMQ 会在消息成功存储后返回确认。

异常处理与重试机制:在发送消息时,要捕获可能的异常,并根据需要进行重试。可以实现一个重试机制,在发送失败时重新尝试发送消息。

消费者消息不丢失

手动消息确认(Manual Acknowledgments):消费者在处理完消息后手动发送消息确认(ACK),只有在 RabbitMQ 收到确认后,消息才会从队列中移除。如果没有收到确认,RabbitMQ 会将消息重新入队,并将其分发给其他消费者。

消息重试机制:

  • 消息重入队(Requeue):当消费者无法成功处理消息时,可以选择通过 basic_nack() 或 basic_reject() 方法将消息重新入队,使 RabbitMQ 将消息重新投递给另一个消费者。
  • 消息处理失败后的重试:在消费失败时,可以设置重试逻辑来尝试重新处理消息。例如,可以将失败的消息延迟一定时间后重新放入队列,再次交由消费者处理。

使用死信队列(Dead Letter Queue, DLQ):通过设置 TTL(消息存活时间)或者最大重试次数,超时或多次处理失败的消息可以被路由到死信队列。这样可以避免消息丢失,同时为后续手动处理这些“问题消息”提供了保障。


消息重复消费的原因

RabbitMQ 出现消息重复消费的原因主要有以下几点:

  1. 消息确认机制异常:
    • RabbitMQ 依赖消费者手动确认消息(ACK)。如果消费者没有及时确认,RabbitMQ 会重新将消息投递给其他消费者。
    • 在使用自动确认模式(auto-ack)时,可能在消费者未完全处理消息时,RabbitMQ 已经认为消费成功,导致消费者重启或失败后重新消费。
  2. 网络问题:
    • 消息确认(ACK)时,网络故障可能导致 RabbitMQ 没有收到确认信号,认为消费失败,重新将消息投递,导致重复消费。
  3. 消费者宕机或重启:
    • 如果消费者在处理消息时宕机或重启,而消息未被确认,RabbitMQ 会重新发送该消息。
  4. 消费失败重试:
    • 当消费失败时,消息可能被重新投递给消费者处理,导致重复消费。

解决消息重复消费的思路

虽然 RabbitMQ 的消息投递模型可能导致消息重复消费,但通过以下几种方法可以有效解决这一问题:

1. 业务幂等性

幂等性是解决消息重复消费的核心。无论消息被消费多少次,业务处理的结果应该是一样的。通过以下策略实现业务的幂等性:

  1. 使用全局唯一的业务 ID:

    • 每条消息带有一个唯一的业务标识符,消费者处理消息时先检查该标识符是否已处理过。如果已处理,则跳过该消息。
    • 这种方式常通过数据库或缓存(如 Redis)来维护处理记录,避免重复处理。

    示例伪代码:

    String messageId = message.getBusinessId();
    if (isProcessed(messageId)) {
        return;  // 已处理,跳过
    }
    processMessage(message);
    markAsProcessed(messageId);  // 处理完成后记录处理状态
    
  2. 数据库唯一约束:

    • 使用数据库的唯一性约束(如唯一索引)来防止数据重复写入。例如,在插入操作时对某个字段(如订单号)设置唯一索引,确保数据库层面不会重复插入。
  3. 乐观锁或版本控制:

    • 在更新数据时,可以使用乐观锁或版本号控制,避免由于消息重复消费而导致数据不一致。

消息堆积的原因

消息堆积的产生通常与以下几种情况有关:

  1. 消费者处理能力不足:
    • 当消费者的处理能力(消费速度)小于生产者的消息生产速度时,消息会堆积在队列中。常见原因包括消费者业务逻辑过于复杂、消费者的硬件资源不足等。
  2. 瞬时消息流量激增:
    • 在系统中某个时间点突然有大量消息产生,短时间内消费者无法处理完所有消息,导致消息在队列中堆积。这种情况通常发生在高峰期或者大规模批量处理场景中。
  3. 消费者异常或宕机:
    • 当消费者出现异常、宕机或停止消费时,队列中的消息无法被及时处理,消息持续堆积。
  4. 消费者消费失败且重回队列:
    • 如果消费者处理消息失败,并且这些消息被重回队列(requeue),会导致同一批消息反复被投递和消费,但无法真正被消费成功,进而导致堆积。
  5. 队列配置不当:
    • RabbitMQ 队列没有设置消息 TTL(过期时间)或队列的最大长度,导致消息长期堆积,尤其是在没有消费者的情况下。
  6. 网络延迟或通信问题:
    • 如果网络问题导致消息无法从队列中传递到消费者,会导致消息逐渐堆积。
消息堆积的影响:
  • 内存占用增加:消息存储在内存或磁盘中,消息量过大可能导致 RabbitMQ 节点内存或磁盘资源耗尽。
  • 系统性能下降:大量消息堆积会增加队列操作的复杂性,导致消息的发布和消费延迟。
  • RabbitMQ 节点崩溃:严重的消息堆积可能导致 RabbitMQ 节点不可用,影响整个消息系统的稳定性。

如何解决消息堆积

扩展消费者:

  • 增加消费者的数量或提升消费者的并发处理能力,以提高消息消费速度。

优化业务逻辑:

  • 优化消费者的业务处理逻辑,减少单条消息的处理时间,避免复杂的同步操作。

使用批量消费:

  • 通过批量消费来减少消费者处理每条消息的开销。可以使用 basicQos 预取多个消息后进行批量处理。

设置消息过期机制:

  • 设置消息的 TTL 或队列的最大长度,确保消息在系统中不会无限期堆积。

应用分布式消费模型:

  • 如果消息量非常大,可以考虑通过水平扩展 RabbitMQ 节点、分区队列等方式来分散压力。

特性

  • 高可用性: RabbitMQ 支持集群和镜像队列(mirrored queues)以确保高可用性。
  • 消息确认: 确保消息被消费且不会丢失。
  • 灵活的路由: 使用交换机和路由键灵活地控制消息的路由。
  • 多种协议支持: 除了 AMQP,RabbitMQ 还支持 STOMP、MQTT、HTTP 等协议。
  • 管理界面: 提供 Web 管理界面,方便监控和管理消息队列
优缺点
  • 优点:
    • 强大的路由能力。
    • 提供多种消息确认和持久化机制。
    • 社区支持和文档丰富。
  • 缺点:
    • 在高吞吐量场景下性能较低。
    • 对于大量消息的积压,可能会导致延迟增加。

RabbitMQ 高可用性

集群

RabbitMQ 支持集群部署,这样多个 RabbitMQ 节点可以协同工作,提供负载均衡和容错能力。集群模式下,消息在不同的节点间传递,某个节点发生故障时,其他节点仍能继续工作。

  • 集群模式特性:
    • 集群中的所有节点都共享相同的用户、权限、队列定义和绑定关系。
    • 队列默认只存储在声明它的节点上,但可以通过镜像队列机制复制到多个节点。

集群的优势:

  • 即使某个节点宕机,整个集群仍然可以正常工作。
  • 通过负载均衡分散消息处理压力。
  • 通过复制和同步数据来保证数据一致性和可用性。

创建 RabbitMQ 集群:

  • 可以通过 rabbitmqctl 工具将多个 RabbitMQ 节点加入到一个集群中。例如,将节点 B 加入到节点 A 的集群中:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@A
rabbitmqctl start_app

镜像队列(Mirrored Queues)

镜像队列是一种高可用队列,允许队列在多个 RabbitMQ 节点上进行复制。通过将队列的副本(镜像)分布到不同的节点上,确保在单个节点故障时,队列和消息仍然可用。

  • 镜像队列机制:
    • 在声明队列时,可以配置该队列为镜像队列,并指定它的镜像副本数量。
    • 主队列和镜像队列之间实时同步,当主队列处理消息时,镜像也会同步处理。
    • 如果主队列的节点宕机,RabbitMQ 会自动提升一个镜像为新的主队列,确保消息不丢失。
  • 配置镜像队列:
    • 通过 policy 来指定哪些队列需要镜像。
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

这将使所有队列镜像到集群中的所有节点。

  • 镜像队列策略:
    • ha-mode=all: 将队列镜像到所有节点。
    • ha-mode=exactly: 指定队列镜像到特定数量的节点。
    • ha-mode=nodes: 将队列镜像到指定的节点列表。

队列分片(Quorum Queues)

队列分片(Quorum Queues)是一种替代镜像队列的机制,专为高可用性和高负载场景设计。与镜像队列相比,Quorum Queues 在处理大量消息时具有更高的容错性和性能。

  • Quorum Queues 特性:
    • 基于 Raft 共识算法,确保消息在多个节点间的一致性和持久化。
    • Quorum Queues 将消息分布到多个节点,而不是完整地复制消息。
    • 更适合长时间运行、处理大量消息的高可用场景。
  • Quorum Queues 的优势:
    • 更好的弹性扩展性,适合处理高负载。
    • 使用分布式算法管理队列的高可用性,比镜像队列更有效率。
# 声明 Quorum Queues
rabbitmqctl set_policy quorum-queues "^" '{"queue-type":"quorum"}'

网络分区管理(Network Partition Handling)

在 RabbitMQ 集群中,如果网络发生分区(partition),即集群中的节点无法互相通信,可能会导致一致性问题。为了处理这种情况,RabbitMQ 提供了几种网络分区处理策略:

  • 自动恢复(Autoheal):
    • 当网络分区恢复时,自动选择其中一个分区作为主分区,并将其他分区恢复为从节点。未恢复的消息可能会丢失,但整个集群会重新回到一致的状态。
  • 强制分区(Pause_minority):
    • 暂停少数分区,继续服务多数节点,防止网络分区期间出现不一致的写操作。
  • 忽略分区(Ignore):
    • RabbitMQ 继续处理所有分区,分区恢复后手动解决不一致问题。这种策略风险较大,不推荐用于生产环境。
# 设置网络分区策略
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to queues

节点健康监控和自动恢复

  • 心跳检测和连接恢复:
    • RabbitMQ 使用心跳机制检测节点和客户端的连接状态。如果某个节点或客户端超过心跳时间没有响应,RabbitMQ 会认为它已宕机并关闭连接。这可以确保节点故障时,消费者和生产者能够及时感知,并进行恢复。
  • 自动故障恢复(Automatic Failover):
    • 在高可用性配置下(如镜像队列或 Quorum Queues),当一个节点故障时,RabbitMQ 会自动将工作转移到其他正常运行的节点。

高可用性客户端配置

  • 客户端自动重连:
    • RabbitMQ 的客户端库(如 Pika、Java 的 AMQP 客户端)通常支持自动重连机制。如果客户端与 RabbitMQ 服务器的连接断开,客户端可以尝试自动重连到集群中的其他节点。
  • 负载均衡:
    • 可以通过负载均衡器(如 Nginx、HAProxy)在 RabbitMQ 集群节点之间分发客户端的连接请求,确保客户端始终连接到可用的 RabbitMQ 节点。

持久化机制

  • 队列和消息持久化:
    • 确保队列和消息都设置为持久化,这样在 RabbitMQ 节点宕机重启后,消息仍然保留在磁盘中。队列持久化可以确保 RabbitMQ 重启时,消息不会丢失。
# 声明持久化队列
channel.queue_declare(queue='your_queue', durable=True)

# 发送持久化消息
channel.basic_publish(
    exchange='your_exchange',
    routing_key='your_routing_key',
    body='your_message',
    properties=pika.BasicProperties(
        delivery_mode=2,  # 设置消息持久化
    ))

总结

RabbitMQ 通过多种机制来确保高可用性:

  1. 集群模式 提供了横向扩展和容错能力。
  2. 镜像队列 确保队列及其消息在多个节点上复制,防止单点故障。
  3. 队列分片(Quorum Queues) 提供了高效的队列管理和更高的容错性。
  4. 网络分区管理 帮助处理集群中网络故障时的分区问题。
  5. 心跳检测与自动恢复 确保节点或客户端故障时的快速检测和恢复。
  6. 负载均衡和自动重连 提供了客户端侧的高可用支持。
  7. 持久化机制 确保队列和消息在 RabbitMQ 重启时不丢失。
问题解决:打开VMware创建的虚拟机,电脑立刻蓝屏并重启 VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credenti 阅读详情

相关推荐

为什么需要知识图谱?什么是知识图谱?——KG的前世今生

我的知乎专栏,对知识图谱感兴趣的朋友可以关注。标题的命名顺序可能让有的读者不太习惯。通常在介绍一个陌生事物的应用前,我们先给出其定义。之所以换个顺序,是为了不让读者一开始就接触比较冰冷生硬的概念刻板描述(后面我尽量用更具体、准确的例子来表达),另一方面也是为了通过现实生活中的例子自然的引入知识图谱的概念。希望通过这种方式加深读者的印象和理解。为了减轻读者理解的负担,我尽可能地避免引入过多的概念和技术

SimmerChan的专栏 8万+

RabbitMQ默认端口

4369:epmd,RabbitMQ节点和CLI工具使用的对等发现服务 5672、5671:由不带TLS和带TLS的AMQP 0-9-1和1.0客户端使用 25672:用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下限制为单个端口,计算为AMQP端口+ 20000)。除非确实需要这些端口上的外部连接(例如,群集使用联合身份验证或在子网外部的计算机上使用CLI工具),否则这些端口不应公开。有关详细信息,请参见网络指南。 35672-35682:由CLI工具..

星猿 2万+

[统计模型] 基于R的潜在剖面分析(LPA)

本文主要介绍基于R进行潜在剖面分析(Latent Profile Aanalysis, LPA)。 关于潜在类别分析LCA/潜在剖面分析LPA的概念和区别,可以参考一下这篇文章: 潜在类别分析LCA \潜在剖面分析LPA介绍https://www.jianshu.com/p/4c830094131e?utm_campaign=maleskine 但是此文对潜类别分析的阐释还比较生涩,而且没有具体的代码编写、模型优选等内容。本文旨在丰富LPA的内容,并希望和大家交流、共同进步。 1. 什么是潜类别分.

bigstar863的博客 1万+

RabbitMQ 的默认端口

2. 管理控制台端口:15672(用于访问 RabbitMQ 的 Web 管理界面)。5. HTTP API 端口:15672(与管理控制台端口一致)。1. AMQP 协议端口:5672(主要用于客户端连接)。通常,5672 和 15672 是最常用的端口。3. STOMP 协议端口:61613。4. MQTT 协议端口:1883。

nbspzs的专栏 1759

Vivado固化程序与Flash型号添加实战指南

本文详细介绍了Vivado程序固化到Flash芯片的完整流程,包括基础操作、Flash型号添加方法及疑难问题排查。针对Vivado官方支持列表缺失的Flash型号,提供了手动添加配置的详细步骤和参数说明,并分享了高级技巧与安全操作建议,帮助开发者高效完成FPGA程序固化。

weixin_29291573的博客 564

Isaac Gym摄像头数据获取全攻略:从CPU到GPU,教你实时显示RGB与深度图

本文详细介绍了在Isaac Gym中获取摄像头数据的两种高效方案:CPU模式与GPU张量模式。通过实战代码示例,展示了从摄像头配置、数据获取到实时可视化RGB与深度图的全流程,帮助开发者优化机器人仿真与计算机视觉应用的性能。特别强调了GPU模式下的零拷贝访问与张量运算优势,适用于需要低延迟处理的场景。

weixin_29056701的博客 387

【RabbitMQ】MQ的基本概念、RabbitMQ简介及安装

本文涉及MQ的基本概念、RabbitMQ简介、RabbitMQ的安装等内容

十八岁讨厌编程的博客 2万+

IEDA激活码失效?教你5分钟快速续期的方法

本文针对IEDA激活码失效问题,提供了一套从快速应急到深度排查的完整解决方案。文章不仅详解了5分钟快速续期与清理缓存等应急方法,更深入剖析了授权机制、离线激活流程,并指导如何构建可持续的授权管理策略,帮助开发者彻底解决激活困扰,确保开发环境稳定。

a0b1c2d3的专栏 273

Rabbitmq的三个端口区分

Rabbitmq的三个端口区分

小梦想的博客 2519

【AI助力科研】不看一篇文献,手把手教你用chatGPT写文献综述!

这篇文章以【AI助力科研】为题,介绍了如何利用ChatGPT编写文献综述的方法。作者通过详细的指导,展示了不需要阅读大量文献,只需依靠ChatGPT模型即可完成文献综述的过程。该方法旨在提高科研工作者的效率,减少阅读负担,并且能够生成具有逻辑性和准确性的文献综述。

研究方向//图像视频处理/信号算法/红外无损检测/数值仿真/机器学习/优化算法/python/matlab 2万+

把 ABAP ALV 做成可点、可改、可保存:Interactive Editable ALV Grid 的一套落地打法

文章摘要(148字): SAP ALV报表开发中,交互式可编辑网格的实用方案需解决三个核心问题:数据展示、交互下钻与编辑保存。本文以SCARR航空公司和SFLIGHT航班数据为例,演示如何实现双击主列表下钻明细、动态切换编辑模式、精确保存修改的技术路线。关键点包括:通过PF-STATUS添加业务按钮、使用CHECK_CHANGED_DATA同步前端修改、保护关键字段避免误操作,以及变更数据的审计跟踪方法。该方案适用于SAP GUI环境下的快速业务调整需求,相比Fiori开发具有更高的实施效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 226

win10 安装RabbitMQ时 执行:rabbitmq-plugins enable rabbitmq_management命令报 Plugin configuration unchanged

安装RabbitMQ时 执行:rabbitmq-plugins enable rabbitmq_management命令报 Plugin configuration unchanged

xin292930540的专栏 6561

Spring Boot 与 Redisson 版本适配深度解析

Spring Boot 与 Redisson 的版本适配是一个动态演进的过程。开发者需要密切关注两者官方的版本更新日志,建立完善的版本验证机制。本文提供的适配方案基于当前最新技术状态(2024年1月),建议在实际生产环境中通过灰度发布策略验证版本兼容性。只有深入理解底层技术原理,才能在分布式系统的星辰大海中稳健航行。延伸阅读Spring Boot 官方迁移指南。

fudaihb的博客 1078

【RabbitMQ】Windows下RabbitMQ的安装和部署

RabbitMQ在windows下安装部署

Hanson的博客 4059

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RabbitMQ学习笔记:节点名称详解、rabbitmq-server、及rabbitmq-env.conf

rabbitmq-server rabbitmq-server 启动一个RabbitMQ节点 1.rabbitmq-server在前端启动一个RabbitMQ节点,示例如下: [root@rabbit3 rabbitmq]# rabbitmq-server ## ## RabbitMQ 3.8.1 ## ## ########## Copyright (c) 20...

OceanSky的专栏 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【RabbitMQ实战】06 RabbitMQ配置

一般情况下,可以使用默认的内建配置来有效地运行RabbitMQ,并且大多数情况下也并不需要修改任何 RabbitMQ的配置。当然,为了更加有效地操控 RabbitMQ,也可以利用调节系统范围内的参数来达到定制化的需求。RabbitMQ提供了三种方式来定制化服务:(1)环境变量(Enviroment Variables )。RabbitMQ服务端参数可以通过环境变量进行配置,例如,节点名称、RabbitMQ配置文件的地址、节点内部通信端口等。(2)配置文件(Configuration File )

程序员笔记 2849

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

rabbitmq系列1——安装并使用rabbitmq

🔥本篇概览:详细讲解了安装并使用rabbitmq,并讲解了数据隔离而生的的virtualhost。🌈⭕🔥

做一个善良的人,做好自己的事,如果愿意,再发一份光。 2060

什么是RabbitMQ

同步通讯:就像打电话,需要实时响应。异步通信:就像发微信,不需要马上回复。两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发微信可以同时与多个人收发信息,但是往往响应会有延迟。学SpringCloud的时候,我们的Feign 其实就是同步通讯的,他其实有以下这几个缺点耦合度高:(每次有新的需求,都需要更改代码)性能下降:(消费者需要等待提供者响应,如果调用链过长,那么响应的时间等于每次调用的时间之和)资源浪费。

越努力越幸运的博客 2896

RabbitMQ——Docker搭建RabbitMQ集群

文章目录RabbitMQ——Docker搭建RabbitMQ集群1、普通集群的搭建1.1、普通集群架构介绍1.2、环境准备1.3、集群搭建2、镜像集群的搭建2.1、配置镜像集群的策略 RabbitMQ——Docker搭建RabbitMQ集群 集群模式介绍 RabbitMQ集群模式有两种:普通模式和镜像模式 普通模式:默认模式,多个节点组成的普通集群,消息随机发送到其中一个节点的队列上,其他节点仅保留元数据,各个节点仅有相同的元数据,即队列结构、交换器结构、交换器与队列绑定关系、vhost。消费者消费消

万里顾一程的博客 5797

RabbitMQ 菜鸟安装、RabbitMQ初接触 AMQP 安装、配置指南

RabbitMQ安装: RabbitMQ是基于Erlang的,所以首先必须配置Erlang环境. 安装Erlang 进入到Erlang官网:http://www.erlang.org 进行下载 安装有两种方式: 1.1.源码安装方式: mkdir erlang cd erlang wget http://www.erlang.org/download/otp_src_R15B.t

hepeng_8的专栏 2872

laravel + rabbitmq

一、安装laravel 两种方式 1. composer global require laravel/installer laravel new wendao 2. composer create-project --prefer-dist laravel/laravel wendao 二、安装rabbitmq 1. docker pull rabbitmq:management //拉取rabbitmq 镜像 //启动容器 2.docker run -d --nam

rockywish的博客 6802

RabbitMQ 入门

MQ,中文是消息队列(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。比较常见的MQ实现:ActiveMQRabbitMQRocketMQKafka追求可用性(当需要处理数据时,资源处于可用状态的程度):Kafka、 RocketMQ 、RabbitMQ追求可靠性:RabbitMQ、RocketMQ追求吞吐能力(十万级别的):RocketMQ、Kafka追求消息低延迟:RabbitMQ、Kafka。

Java小白的博客 致力分享每一天学到的知识 1945

RabbitMQ的基本使用

RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。 一、消息队列 1、MQ:Message Queue释义 服务之间最常见的通信方式是直接调用彼此来通信,消息从一端发出后立即就可以达到另一端,称为即时消息通讯(同步通信) 消息从某一端发出后,首先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发送给另一端,称为延迟消息通讯(异步通信) 2、消息队列特点.

qq_54936371的博客 3076

RabbitMQ 教程 | 第6章 RabbitMQ 配置

这篇 RabbitMQ 教程为学习者提供了全面的内容,帮助学习者充分掌握 RabbitMQ 的应用。整篇教程丰富内容详实,适合初学者和有经验的开发者参考学习。

编程洪同学 4045

RabbitMQ系列之RabbitMQ集群

本文的集群是RabbitMq 自身的Cluster搭建 。 #hosts准备: vim /etc/hosts #172.16.3.79 s1 #172.16.3.105 s2 172.16.2.10 centos-43 172.16.2.11 centos-44 #erlang cookie 设置 #path var/lib/rabbitmq...

weixin_34310127的博客 1781
上一篇: Redis持久化机制
下一篇: Java中线程池参数如何设置
yymagicer
博客等级 码龄13年 1425粉丝 180原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yymagicer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值