6.工作队列

news/2024/9/5 18:41:40 标签: rabbitmq, java-rabbitmq, java

工作队列又叫任务队列,避免立即执行资源密集型任务,而不得不等待它完成。把任务封装成消息并将其发送到队列,当有多个工作线程时,这些工作线程将一起处理这些任务。

多个工作线程也就是多个消费者,采用轮训分发

工具类

java">package com.xkj.org.utils;

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

public class RabbitMQUtil {

    public static Channel getChannel() {
        try {
            //创建连接工厂
            ConnectionFactory connectionFactory = new ConnectionFactory();
            connectionFactory.setHost("192.168.171.128");
            connectionFactory.setUsername("admin");
            connectionFactory.setPassword("123");
            //创建连接
            Connection connection = connectionFactory.newConnection();
            //创建信道
            Channel channel = connection.createChannel();
            return channel;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;

    }
}

消费者工作线程(启动多个)

java">package com.xkj.org.mq.work;

import com.rabbitmq.client.CancelCallback;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;
import com.xkj.org.utils.RabbitMQUtil;

import java.io.IOException;

public class Work01 {

    private static final String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException {
        Channel channel = RabbitMQUtil.getChannel();
        DeliverCallback deliverCallback = (consumerTag, message) -> {
            System.out.println("work1 接受到消息:"+ new String(message.getBody()));
        };
        CancelCallback cancelCallback = consumerTag -> {
            System.out.println("work1 消息消费被中断");
        };
        System.out.println("work1等待接收......");
        channel.basicConsume(QUEUE_NAME, true, deliverCallback, cancelCallback);
    }
}

生产者

java">package com.xkj.org.mq.work;

import com.rabbitmq.client.Channel;
import com.xkj.org.utils.RabbitMQUtil;

import java.io.IOException;
import java.util.Scanner;

public class Task01 {

    private static final String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException {
        Channel channel = RabbitMQUtil.getChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String message = scanner.next();
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            System.out.println("发送消息完成,消息内容:"+ message);
        }
    }
}

http://www.niftyadmin.cn/n/5564793.html

相关文章

2024-07-19 Unity插件 Odin Inspector10 —— Misc Attributes

文章目录 1 说明2 其他特性2.1 CustomContextMenu2.2 DisableContextMenu2.3 DrawWithUnity2.4 HideDuplicateReferenceBox2.5 Indent2.6 InfoBox2.7 InlineProperty2.8 LabelText2.9 LabelWidth2.10 OnCollectionChanged2.11 OnInspectorDispose2.12 OnInspectorGUI2.13 OnIns…

自学第十九天----深入探究数组下

3. 数组越界 数组的下标是有范围限制的。 数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1。 所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。 C语言本身…

汇编 -- ARM汇编之 .inst指令与udf指令使用

ARM 汇编中的 .inst 与 udf 指令 技术背景 在ARM汇编编程中&#xff0c;有时需要使用一些标准汇编语言不支持的特殊指令&#xff0c;或需要在代码中插入断点或生成故意的异常以便进行调试和错误处理。.inst和udf指令在这些场景中非常有用。 .inst 指令 语法 .inst <mac…

【C语言初阶】C语言数组基础:从定义到遍历的全面指南

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C语言 “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C语言函数 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀数组 &#x1f4d2;1. 什么是数组…

在 Git 中把文件恢复到之前的提交

原文链接&#xff1a;https://www.delftstack.com/zh/howto/git/git-revert-file-to-previous-commit/ 假设我们的项目 Git 仓库中有一个名为 README.md 的文件。我们可以使用 git log 命令浏览该文件的提交历史记录&#xff0c;如下所示。 $ git log --oneline README.md 81…

MySQL基本语法规则 By 尚硅谷

文章目录 一、 基本的语法规则二、select1. select语句的基本使用1.1 select的最简单使用1.2 列的别名1.3 取出重复行1.4 查询常数1.5 显示表结构 2. select语句设置过滤条件查询2.1 where的简单使用2.2 关键字2.3逻辑运算符2.4 位运算符&#xff08;了解&#xff09; 三、排序…

企业VR展厅如何提升品牌形象,生动展示产品和企业文化?

一、提升产品展示效果 1、全方位展示产品细节 企业VR展厅可以通过3D建模和虚拟现实技术&#xff0c;将产品的每一个细节清晰地展示出来。客户可以全方位查看产品的外观、结构和功能。这种身临其境的体验远比传统的平面展示更加生动和详细。 细节展示&#xff1a;客户可以通过…

JavaWeb笔记_Request对象

一.Request对象概述 a.Request专门用来获取浏览器的请求信息(请求行,请求头,请求体)的对象 b.我们主要使用的是跟HTTP协议相关的Request对象:HttpServletRequest 继承了 ServletRequest 扩展了ServletRequest接口,提供了更多基于HTTP协议的方法 二.通过Request对象获取请…