首页 > 其他分享 >RabbitMQ快速入门与详解

RabbitMQ快速入门与详解

时间:2023-03-25 18:44:09浏览次数:45  
标签:connectionFactory 入门 队列 rabbitmq 详解 RabbitMQ public 消息

一、RabbitMQ简介

1.简介

 RabbitMQ是一个开源的消息代理(Message Broker)软件,实现了高级消息队列协议(AMQP),支持多种消息传递模式,例如点对点、订阅/发布等。

 RabbitMQ的核心是基于Erlang语言实现的AMQP协议消息队列服务器,采用分布式架构,提供高可用性可扩展性可靠性的消息队列服务。RabbitMQ具有以下特点:

  • 轻量级且易于部署;
  • 开放源码,跨平台支持;
  • 提供多种客户端支持,包括Java、C#、Python等;
  • 支持多种消息传递模式,包括点对点、订阅/发布等;
  • 可以通过插件扩展功能,例如Web管理界面、LDAP支持等。

RabbitMQ主要由以下几个组件构成:

  • Producer:消息生产者,将消息发送到消息队列中;
  • Consumer:消息消费者,从消息队列中接收消息;
  • Exchange:消息交换机,负责接收生产者发送的消息,并将消息路由到相应的队列中;
  • Queue:消息队列,存储消息的缓冲区;
  • Binding:绑定关系,将交换机和队列绑定在一起,形成路由规则。

RabbitMQ的消息传递模式主要包括以下几种:

  • 点对点模式(Point-to-Point,简称P2P):消息生产者将消息发送到指定的队列中,消息消费者从该队列中接收消息。这种模式下,消息被消费后从队列中删除,只能被一个消费者消费。
  • 发布/订阅模式(Publish/Subscribe,简称Pub/Sub):消息生产者将消息发送到交换机中,交换机将消息路由到与之绑定的所有队列中,多个消息消费者从各自的队列中接收消息。这种模式下,消息不会被从队列中删除,可以被多个消费者消费。
  • 主题模式(Topic):与发布/订阅模式类似,但是消息生产者可以指定消息的主题(Topic),交换机将消息路由到与之绑定的所有队列中,多个消息消费者根据自己的主题从各自的队列中接收消息。

总之,RabbitMQ是一款可靠、可扩展、可定制的消息队列中间件,适用于各种规模的应用程序,广泛应用于分布式系统中。

二、使用步骤

  1. 安装RabbitMQ
    首先需要在本地或服务器上安装RabbitMQ。可以从RabbitMQ的官网下载对应版本的安装程序进行安装。

  2. 创建连接
    在Java中,需要使用RabbitMQ客户端库来创建连接。需要指定RabbitMQ的主机名、用户名、密码等信息来创建连接。

  3. 创建通道
    一旦连接到RabbitMQ,就需要创建通道来进行消息传递。通道是轻量级的,可以使用多个通道来发送和接收消息。

  4. 声明队列
    在RabbitMQ中,需要先声明一个队列才能将消息发送到队列中。队列可以在创建时指定名称和其他属性。

  5. 发布消息
    在RabbitMQ中,消息可以通过将消息内容发送到队列来发布。在Java中,可以使用basicPublish()方法将消息内容发布到队列中。

  6. 消费消息
    在RabbitMQ中,消费者需要注册对消息队列的兴趣。一旦有消息进入队列,消费者就可以从队列中接收消息并对其进行处理。

以上是RabbitMQ的基本使用步骤。在实际应用中,可能需要更复杂的处理流程和使用场景,例如消息确认、交换机、路由等。

三、示例

  1. 首先,需要安装 RabbitMQ。可以从官方网站(https://www.rabbitmq.com/download.html)下载并安装。
  2. 创建一个 Maven 项目,并添加以下依赖:
<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.11.0</version>
</dependency>
  1. 在项目中创建一个 RabbitMQConfig 类,用于配置 RabbitMQ 连接信息:
@Configuration
public class RabbitMQConfig {

    @Value("${spring.rabbitmq.host}")
    private String host;

    @Value("${spring.rabbitmq.port}")
    private int port;

    @Value("${spring.rabbitmq.username}")
    private String username;

    @Value("${spring.rabbitmq.password}")
    private String password;

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(host);
        connectionFactory.setPort(port);
        connectionFactory.setUsername(username);
        connectionFactory.setPassword(password);
        return connectionFactory;
    }

    @Bean
    public RabbitTemplate rabbitTemplate() {
        return new RabbitTemplate(connectionFactory());
    }

    @Bean
    public SimpleMessageListenerContainer messageListenerContainer() {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory());
        container.setQueueNames("myQueue");
        container.setMessageListener(new MessageListenerAdapter(new Receiver()));
        return container;
    }

}
  1. 创建一个 Sender 类,用于发送消息:
@Component
public class Sender {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void send(String message) {
        rabbitTemplate.convertAndSend("myExchange", "myRoutingKey", message);
    }

}
  1. 创建一个 Receiver 类,用于接收消息:
public class Receiver {

    public void handleMessage(String message) {
        System.out.println("Received message: " + message);
    }

}
  1. 在 application.properties 文件中添加 RabbitMQ 的连接信息:
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
  1. 在程序中使用 Sender 类发送消息,例如:
@Autowired
private Sender sender;

public void someMethod() {
    sender.send("Hello, world!");
}

这样,当 someMethod() 方法被调用时,Sender 类将发送一条消息到名为 "myExchange" 的交换机,并使用 "myRoutingKey" 路由到 "myQueue" 队列中。Receiver 类中的 handleMessage() 方法将接收该消息,并将其输出到控制台。

标签:connectionFactory,入门,队列,rabbitmq,详解,RabbitMQ,public,消息
From: https://www.cnblogs.com/arek/p/17255323.html

相关文章

  • WPF 入门基础
    关于WPF和XAML什么是WPFWPF(WindowsPresentationFoundation)是由微软开发的桌面应用程序框架,用于创建现代化、高度交互和具有视觉吸引力的用户界面。它是.NETFrame......
  • SpringMVC快速入门与详解
    一、SpringMVC简介1.概念 SpringMVC是一种基于Java的实现MVC设计模式的Web框架,该框架通过将Web应用程序划分为模型、视图和控制器来简化Web应用程序的开发......
  • MongDB语法与快速入门
    一、MongDB简介1.概念 MongoDB是一个开源的文档型NoSQL数据库,它支持的数据模型是面向文档的,使用了类似JSON的BSON(二进制JSON)格式来存储数据,且提供了动态查询和索引功能......
  • Kafka快速使用与详解
    一、Kafka简介1.概念 Kafka是一个分布式的、基于发布/订阅的消息队列,最初由LinkedIn开发,并于2011年成为Apache项目的一部分。Kafka具有高吞吐量、可扩展性、持久性和容......
  • Nginx快速入门与详解
    一、Nginx简介1.概念 Nginx是一款高性能的HTTP和反向代理服务器,常用于静态资源的访问、负载均衡、HTTP缓存和反向代理等。以下是Nginx的常用功能和配置介绍:以下是常用......
  • Oracle入门6(plsql语言)
    游标,触发器,plsql存储过程,存储函数,包plsql编程语言--普通用户需要获取编程权限grantcreateprocedureto用户名;grantexecuteanyprocedureto用户名;grant......
  • 【入门】Go语言常量详解
    1、什么是常量?程序运行期间不可以变的量使用const定义不能修改常量的值不能打印常量的地址常量在定义时候必须赋值2、常量于变量的区别?变量的值是可以变的,常量......
  • Zookeeper快速使用与详解
    一、Zookeeper简介1.概念 Zookeeper是一个开源的分布式协调服务,用于管理大型集群中的资源、配置信息和命名服务等;也是一个高性能的、可靠的、分布式的、开放源代码的协......
  • 重置RabbitMQ用户密码
    在/usr/sbin下执行rabbitmqctlset_user_tags用户名用户权限[root@rzksbin]#pwd/usr/sbin[root@rzksbin]#rabbitmqctlset_user_tagsxxxadministratorSet......
  • 【入门】Go语言变量详解
    目录一、变量赋值的几种方式1.1声明单个变量1.2声明多个变量1.3初始化变量1.4变量赋值1.5自动推导类型方式声明变量二、输出输入格式控制2.1输出格式2.1输入格式2.3......