`
lijiejava
  • 浏览: 262357 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

RabbitMQ基础学习01

 
阅读更多
// base demo
ConnectionFactory connectionFactory = newConnectionFactory();
connectionFactory.setHost("127.0.0.1");
Connection connection =connectionFactory.newConnection();
Channel channel =connection.createChannel(); 
channel.queueDeclare(QUEUE_NAME,false, false, false, null);
String message = "Hi,I am Leo";
channel.basicPublish("",QUEUE_NAME, null, message.getBytes());
System.out.println("  sent'"+message+"' "); 
channel.close();
connection.close(); 

ConnectionFactory connectionFactory = newConnectionFactory();
connectionFactory.setHost("127.0.0.1");
Connection connection =connectionFactory.newConnection();
Channel channel =connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false,null);
System.out.println(" [*] waiting formessage. ");
                  
QueueingConsumer consumer = newQueueingConsumer(channel);
channel.basicConsume(QUEUE_NAME, true,consumer);
        
while(true){
         QueueingConsumer.Deliverydelivery = consumer.nextDelivery();  //Delivery 传送
         Stringmessage = new String(delivery.getBody());
         System.out.println(" received '"+message+"' ");
} 


Connection: 就是一个TCP的连接。Producer和Consumer都是通过TCP连接到RabbitMQServer的。从上面的demo可以看到,程序的起始处就是建立这个TCP连接。

Channels: 虚拟连接。它建立在上述的TCP连接中。数据流动都是在Channel中进行的。也就是说,一般情况是程序起始建立TCP连接,第二步就是建立这个Channel。

创建connection(TCP连接) --> 创建channel --> 声明消息队列

在RabbitMQ中,无论是生产者发送消息、还是消费者接收消息,都需要先声明一个消息队列(MessageQueue)。这就存在一个问题:是生产者声明还是消费者声明?要解决这个问题,首先需要明确:

1.       消费者是无法订阅或者获取不存在的队列中的消息

2.       消息被Exchange接收以后,如果没有匹配的Queue,则会被丢弃

从第1点可以知道消费者在接收消息之前需要声明队列,否则可能会导致无法订阅/获取

从第2点可以知道生产者需要在发送消息之前声明队列,否则可能会导致消息丢失

所以无论生产者还是消费者,在生产/接受之前都需要声明队列,并且如果客户端声明一个已经存在的队列,RabbitMQ不会做任何操作,直接返回成功。
分享到:
评论

相关推荐

    rabbitmq基础+springboot集成rabbitmq

    **RabbitMQ基础** RabbitMQ是一个开源的消息代理和队列服务器,用于在分布式系统中进行消息传递。它是基于AMQP(Advanced Message Queuing Protocol)协议实现的,提供了高可用性、可扩展性和稳定性。RabbitMQ的...

    SpringBoot整合RabbitMQ基础学习Exchange源码

    在本文中,我们将深入探讨如何在SpringBoot应用中整合RabbitMQ,并重点解析Exchange的相关源码。RabbitMQ是一款开源的消息代理和队列服务器,它使用AMQP(Advanced Message Queuing Protocol)协议,广泛应用于...

    rabbitmq学习笔记和软件和插件

    “尚硅谷”的学习笔记提供了关于RabbitMQ的详细教程,涵盖了基础概念、安装配置、实战案例等多个方面,是初学者入门的好资料。此外,官方文档也是深入理解RabbitMQ功能和特性的关键资源,包括了详细的API参考、插件...

    新手友好:RabbitMQ零基础学习指南

    "RabbitMQ零基础学习指南"是一个专为初学者准备的全面教程,旨在帮助用户从零开始学习RabbitMQ这一流行的开源消息代理。本指南涵盖了RabbitMQ的基本概念、安装与配置、核心组件、消息生产与消费、消息路由机制、高级...

    rabbitMQ学习资料

    学习RabbitMQ时,你需要了解如何配置这些组件,以及如何通过编程接口(如Java的AMQP库或Python的pika库)与RabbitMQ交互。资料中的源码示例可以帮助你更好地理解这个过程。 在实际应用中,RabbitMQ有以下几个关键...

    rabbitmq学习笔记.zip

    RabbitMQ是一个开源的消息...总的来说,这个“rabbitmq学习笔记.zip”文件应该为初学者提供了一个全面了解和掌握RabbitMQ的资源,从基础概念到实践操作,再到高级特性和最佳实践,帮助读者建立起对RabbitMQ的深入理解。

    rabbitmq学习书籍

    ### RabbitMQ基础概念 RabbitMQ 是一个开源的消息代理软件,基于AMQP (Advanced Message Queuing Protocol)标准实现。它提供了多种编程语言的客户端支持,可以部署在分布式系统环境中作为消息中间件使用。RabbitMQ...

    RabbitMQ学习简单demo项目源码

    【RabbitMQ学习简单demo项目源码】是一个用于学习RabbitMQ基础概念和使用方法的实战项目。这个项目包含了RabbitMQ的各种模式示例,对于希望通过实践来掌握RabbitMQ的人来说是一个很好的起点。 RabbitMQ是基于AMQP...

    rabbitmq实战学习-rabbitmqlearning.zip

    一、RabbitMQ基础 1. 消息队列:RabbitMQ基于AMQP(Advanced Message Queuing Protocol)协议,提供消息队列服务,使得应用程序可以异步处理任务,提高系统响应速度和并发能力。 2. 工作模型:RabbitMQ支持多种...

    RabbitMQ linux 安装包和安装环境

    在Linux环境中安装RabbitMQ,我们需要遵循一系列步骤,确保安装过程顺利并为后续的使用打下基础。 首先,为了安装RabbitMQ,我们的Linux系统应该已经更新到最新版本,并且安装了Erlang,因为RabbitMQ是用Erlang编程...

    【学习资源】rabbitmq实例代码

    在深入学习这两个项目之前,你需要了解以下RabbitMQ的基础概念: - **消息**:消息是通过RabbitMQ传输的基本单元,它们由头和体两部分组成。 - **交换机**:交换机负责根据预定义的路由规则将消息分发到对应的队列...

    RabbitMq有关学习资料

    RabbitMQ是一个开源的消息代理...通过这两份资料,你可以获得从基础理论到实战应用的全面理解,有助于在实际项目中充分利用RabbitMQ的优势,解决高并发场景下的服务器压力,实现负载均衡,提升系统的稳定性和可扩展性。

    学习rabbitMQ时用的所有软件及常见问题解决办法.rar

    在深入探讨RabbitMQ之前,我们首先...通过实践和解决遇到的问题,你将逐步掌握RabbitMQ的精髓,为构建可靠的分布式系统打下坚实的基础。在你的学习旅程中,这个压缩包会是一个宝贵的参考资料,帮助你高效地克服难关。

    RabbitMq学习笔记1

    **RabbitMQ基础概念与安装** RabbitMQ是一款开源的消息队列系统,它遵循Advanced Message Queuing Protocol (AMQP)标准,用Erlang语言开发,适用于分布式系统中的异步任务处理、解耦以及负载均衡。在本篇学习笔记中...

    RabbitMQ实战指南-rabbitmq-action.zip

    **一、RabbitMQ基础** 1. **消息中间件**: 消息中间件是分布式系统中的重要组成部分,它允许不同组件之间通过异步通信进行解耦。RabbitMQ作为这样的中间件,负责接收、存储和转发消息。 2. **AMQP协议**: AMQP是一...

    RabbitMQ实战带目录版本

    ### 一、RabbitMQ基础 1. **消息队列原理**:RabbitMQ的核心概念是消息队列,它充当生产者和消费者之间的中介,允许两者异步通信。生产者发送消息到队列,而消费者从队列中接收消息,这样可以解耦系统组件,提高...

    rabbitMq安装教程以及软件

    `otp_win64_20.2.exe` 是Erlang OTP(Open Telecom Platform)的Windows 64位版本,它是RabbitMQ运行的基础环境,因为RabbitMQ是用Erlang编写的。Erlang是一种并发性强、容错性高的编程语言,特别适合构建分布式系统...

    rabbitmq学习代码以及对应linux安装包

    3. `erlang-21.3-1.el7.x86_64.rpm`:这是Erlang的安装包,Erlang是RabbitMQ的基础语言环境。RabbitMQ是用Erlang编写的,因此在安装RabbitMQ之前,必须先安装Erlang。这个版本是针对EL7(CentOS 7或RHEL 7)的64位...

    rabbitmqdemo

    1. **RabbitMQ基础**:RabbitMQ的核心功能是作为消息中间件,提供可靠的异步通信。它通过消息队列进行通信,确保即使在高负载下也能保持系统的稳定性和可扩展性。 2. **AMQP协议**:RabbitMQ遵循AMQP协议,这是一种...

    CentOS 7 下安装RabbitMQ教程配套的离线文件

    Erlang 是 RabbitMQ 的基础,因为 RabbitMQ 是用 Erlang 编程语言编写的。Erlang 提供了一种并发友好的环境,非常适合构建高可用性和容错性的分布式系统。这个 RPM 包包含了 Erlang 运行时系统,包括所需的库和工具...

Global site tag (gtag.js) - Google Analytics