RabbitMQ入门4:生产者、消费者演示;多个消费者平均压力、公平派遣;

说明:

(1)内容说明:

          ● 这儿我们会创建一个项目,演示RabbitMQ最基础的内容;

通过,这个最简单的例子,先了解:如何使用RabbitMQ,如何连接RabbitMQ,如何发送消息,如何接收消息等最最基础的内容;

          ● 然后,会演示多个消费者平均压力的内容;

目录

一:第一个生产者和消费者;

0.创建一个maven项目rabbitmq,演示用;

1.引入RabbitMQ的Java客户端的,依赖;

2.第一个生产者;

3.第一个消费者;

4.瞅一眼RabbitMQ管理后台;

二: 根据消息内容的不同,采取不同的处理策略;(这儿演示的是一种思路)

三:当消息相对较多时,多个消费者平均压力; 

1.多个消费者,平均压力:引入; 

2.公平派遣;


一:第一个生产者和消费者;

0.创建一个maven项目rabbitmq,演示用;

 RabbitMQ支持多语言,其中就包括Java;同时,RabbitMQ的API丰富,我们可以利用RabbitMQ针对Java提供的客户端的一系列API,来完成操作;

1.引入RabbitMQ的Java客户端的,依赖;

    <dependencies>
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.29</version>
        </dependency>
    </dependencies>

说明:

(1)依赖说明;

2.第一个生产者;

Send类:

package helloworld;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 描述:发送消息的类:连接到RabbitMQ的服务端,然后发送一条消息,然后退出;
 */
public class Send {
    //我们发送消息时,需要指定要发到哪里去;所以,我们要指定队列的名字;所以,这儿我们定义队列的名字;
    //这个名字可随便取,待会在接收的消息时候,要使用这个队列;
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException, TimeoutException {
        //1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //2.设置RabbitMQ的地址(即RabbitMQ的服务端的地址)
        //这里面填写是RabbitMQ服务端所在服务器的ip地址
        connectionFactory.setHost("1**.***.***.**8");
        //然后,要想连接RabbitMQ的服务端,我么还需要通过一个用户才行;
        // 所以,这儿我们使用【前面我们设置的,能够在其他服务器上访问RabbitMQ所在服务器的,admin用户】
        connectionFactory.setUsername("admin");
        connectionFactory.setPassword("password");
        //PS:记得要放开RabbitMQ部署的服务器的,5672端口;
        //3.建立连接
        Connection connection = connectionFactory.newConnection();
        //4.获得Channel信道(我们大部分的操作,都是在信道上完成的;有了信道后,我们就可以进行操作了)
        Channel channel = connection.createChannel();
        //5.声明队列(有了队列之后,我们就可以发布消息了)
        //参数说明:第一个参数(queue):队列名;
        // 第二个参数(durable):这个队列是否需要持久(即,服务重启后,这个队列是否需要还存在;这儿我们根据自己的需求,设为了false;)
        //第三个参数(exclusive):这个队列是否独有(即,这个队列是不是仅能给这个连接使用;这儿我们设为了false)
        //第四个参数(autoDelete):这个队列是否需要自动删除(即,在队列没有使用的时候,是否需要自动删除;这儿我们设为了false)
        //第五个参数(arguments);
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        //6.发布消息
        String message = "测试的消息";
        //参数说明:第一个参数(exchange)是交换机,这儿我们暂时不深入了解;
        // 第二个参数(routingKey)是路由键,这儿我们就写成队列的名字;
        //第三个参数(props),消息除了消息体外,还要有props作为它的配置;
        // 第四个参数(body)消息的内容,要求是byte[]类型的,同时,需要指定编码类型
        channel.basicPublish("",QUEUE_NAME,null,message.getBytes("UTF-8"));
        System.out.println("消息发送成功了:" + message);
        //7.关闭连接:先关闭channel信道,然后关闭connection连接;
        channel.close();
        connection.close();
    }


}

说明:

(0)RabbitMQ有三个所谓的“端”:这儿梳理一下;

          ● 服务端:就是我们安装了RabbitMQ的Linux系统;我们把RabbitMQ启动后,这个服务器中的RabbitMQ就是服务端;

          ● 管理后台:RabbitMQ的管理后台,就是我们在【RabbitMQ入门3:RabbitMQ管理后台,简介;】中,演示的在web端查看、管理RabbitMQ的一些配置的地方;(PS:要想在网页上访问管理后台,那么部署RabbitMQ的服务器,就要开发RabbitMQ的15672端口)

          ● 客户端:比如,在这儿,我们在我们的Java项目中,引入RabbitMQ提供的Java客户端后,我们就可以通过客户端去操作RabbitMQ了;(PS:要想在远端服务器,通过客户端访问RabbitMQ服务,那么部署RabbitMQ的服务器,就要开发RabbitMQ的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值