RabbitMQ—简单工作队列(WorkQueue)

RabbitMQ—简单工作队列(WorkQueues)

引言

在这里插入图片描述
工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。

案例(轮询分发消息)

一个生产者,两个消费者

抽取工具类
public class RabbitMQUtils {

    public static Channel getChannel() throws Exception {

        // 创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("localhost");
        connectionFactory.setUsername("cjd");
        connectionFactory.setPassword("123456");

        // 创建连接和管道
        Connection connection = connectionFactory.newConnection();
        Channel channel = connection.createChannel();

        return channel;
    }
}

创建生产者
public class Task {
    public static final String WORK_QUEQU_NAME = "hello";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMQUtils.getChannel();

        channel.queueDeclare(WORK_QUEQU_NAME,false,false,false,null);
        String message = "workqueues";
        for (int i = 0; i < 10; i++) {
            channel.basicPublish("",WORK_QUEQU_NAME,null,(message+i).getBytes());
        }
        System.out.println("消息发送完成");

    }
创建消费者
public class Worker01 {
    public static final String WORK_QUEQU_NAME = "hello";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMQUtils.getChannel();

        channel.queueDeclare(WORK_QUEQU_NAME,false,false,false,null);

        System.out.println("work2等待接收消息.........");


        //推送的消息如何进行消费的接口回调
        DeliverCallback deliverCallback=(consumerTag, delivery)->{
            String message= new String(delivery.getBody());
            System.out.println("消息已接收:"+ message);
        };
        //取消消费的一个回调接口 如在消费的时候队列被删除掉了
        CancelCallback cancelCallback=(consumerTag)->{
            System.out.println("消息消费被中断");
        };
        channel.basicConsume(WORK_QUEQU_NAME,true,deliverCallback,cancelCallback);

    }
}

创建一个消费者,开启两个线程
在这里插入图片描述
在这里插入图片描述

启动并测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

通过程序执行发现生产者发送 10个消息,消费者 1 和消费者 2 会轮询的接收消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值