rabbitmq安装、基本使用

news2024/11/16 9:21:24

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management

docker会自己下载,然后运行

进入docker:

docker exec -it rabbitmq bash

进入容器,重启rabbitmq:rabbitmq-server restart

感觉所有的消息队列都差不多,都是创建,连接,发消息,获得消息

package com.quxiao;

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

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

/**
 * @program: springboot
 * @author: quxiao
 * @create: 2023-10-29 09:39
 **/
public class t1 {

    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("127.0.0.1");
        factory.setPort(5672);
        factory.setUsername("123");
        factory.setPassword("123");
        factory.setVirtualHost("/");
        Connection connection = null;
        Channel channel = null;
        try {
            //连接
            connection = factory.newConnection("生产者1");
            //通道
            channel = connection.createChannel();
            channel.queueDeclare("duilie1", false, false, false, null);
            channel.basicPublish("", "duilie1", null, "队列消息".getBytes());

        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (TimeoutException e) {
            throw new RuntimeException(e);
        } finally {
            channel.close();
            connection.close();
        }
    }
}

 消费:

package com.quxiao;

import com.rabbitmq.client.*;

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

/**
 * @program: springboot
 * @author: quxiao
 * @create: 2023-10-29 10:11
 **/
public class t2 {

    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("127.0.0.1");
        factory.setPort(5672);
        factory.setUsername("123");
        factory.setPassword("123");
        factory.setVirtualHost("/");
        Connection connection = null;
        Channel channel = null;
        try {
            //连接
            connection = factory.newConnection("生产者1");
            //通道
            channel = connection.createChannel();
//            channel.queueDeclare("duilie1", false, false, false, null);
//            channel.basicPublish("", "duilie1", null, "队列消息".getBytes());
            channel.basicConsume("duilie1", true, new DeliverCallback() {
                @Override
                public void handle(String consumerTag, Delivery message) throws IOException {
                    System.out.println(new String(message.getBody(), "UTF-8"));
                }
            }, new CancelCallback() {
                @Override
                public void handle(String consumerTag) throws IOException {
                    System.out.println("接收消息失败");
                }
            });
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (TimeoutException e) {
            throw new RuntimeException(e);
        } finally {
            channel.close();
            connection.close();
        }
    }
}

路由分组模式:

定义路由key,将队列绑定,发送到路由key,就会发到被绑定的所有队列。 

package com.quxiao;

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

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

/**
 * @program: springboot
 * @author: quxiao
 * @create: 2023-10-29 09:39
 **/
public class t1 {

    public static void main(String[] args) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("127");
        factory.setPort(5672);
        factory.setUsername("123");
        factory.setPassword("123");
        factory.setVirtualHost("/");
        Connection connection = null;
        Channel channel = null;
        try {
            //连接
            connection = factory.newConnection("生产者1");
            //通道
            channel = connection.createChannel();
//            channel.queueDeclare("", false, false, false, null);
            channel.basicPublish("amq.direct", "type2", null, "队列消息".getBytes());
//21
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (TimeoutException e) {
            throw new RuntimeException(e);
        } finally {
            channel.close();
            connection.close();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1151167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于平衡优化器算法的无人机航迹规划-附代码

基于平衡优化器算法的无人机航迹规划 文章目录 基于平衡优化器算法的无人机航迹规划1.平衡优化器搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用平衡优化器算法来优化无人机航迹…

前端如何实现多种方式圆形可点击区域

前言 四种方式都可以实现在圆形区域内添加点击事件,选择哪种方式可以根据具体情况选择。其中使用canvas实现的方式可以更好地适用于需要绘制复杂图形的情况下。 方式一:border-radius 使用CSS的border-radius属性创建圆形区域,然后通过绑定点…

Spring Boot 3系列之一(初始化项目)

近期,JDK 21正式发布,而Spring Boot 3也推出已有一段时间。作为这两大技术领域的新一代标杆,它们带来了许多令人振奋的新功能和改进。尽管已有不少博客和文章对此进行了介绍,但对于我们这些身处一线的开发人员来说,有些…

Generalized Zero-Shot Learning With Multi-Channel Gaussian Mixture VAE

L D A _{DA} DA​最大化编码后两种特征分布之间的相似性 辅助信息 作者未提供代码

通过引入插件Grid Masschange实现批量修改交互网格数据

现状描述: 很多时候我们需要对交互式网格进行数据更新,单个或少量的数据还好,一旦数据量过大,APEX现有的原生手动输入就不能满足需求,既浪费人力又浪费时间,白白损失了劳动成本,应对这种情况,有…

flink 反压原理

背景 在flink中由于数据倾斜或者数据处理速率的不匹配,很容易引起反压,本文就看一下flink反压的原理 flink反压原理 flink全流程pineline的反压实现其实依赖于TaskManager之间的反压和TaskManager内部的反压来实现 1.TaskManager之间的反压 2.Task…

Linux指令【上】

目录 目录结构 ls cd stat touch mkdir whoami 查看当前帐号是谁 who 查看当前有哪些人在使用 pwd 当前的工作目录 目录结构 目录结构就是一颗多叉树的样子 路径 我们从 / 目录开始,定位一个叶子文件的…

【Holocubic简化修改版——基于STM32F405+ESP8266-12F:使用FreeRTOS和标准库】

一.简介 第一次看到Holobubic项目是稚晖君视频:【自制】如何制作一个赛博朋克风格的 百大UP奖杯 【软核】 但是稚晖君的项目是基于ESP32PICO-D4,因此我想尝试使用STM32复刻一个。实际上,使用STM32复刻Holocubic在CSDN上已经有一位博主发布了他…

vsCode安装CodeRunner插件输出中文乱码问题

1 vsCode下载 vcCode官网地址:https://code.visualstudio.com/ 2 安装CodeRunner 通过Ctrl Shift P 找到 settings找到code-runner.executorMap,在 settings.json 中加入 "code-runner.executorMap": {....."python": "s…

MSQL系列(十一) Mysql实战-Inner Join算法底层原理及驱动表选择

Mysql实战-Inner Join算法驱动表选择 前面我们讲解了BTree的索引结构,及Mysql的存储引擎MyISAM和InnoDB,也详细讲解下 left Join的底层驱动表 选择, 并且初步了解 Inner join是Mysql 主动选择优化的驱动表,知道索引要建立在被驱动表上 那么对于Inner j…

AdaBins:使用自适应bins进行深度估计

论文:https://arxiv.org/abs/2011.14141 代码:https://github.com/open-mmlab/mmsegmentation/tree/main/projects/Adabins 0、摘要 本文主要解决了从单个RGB输入图像估计高质量密集深度图的问题。我们从一个baseline的encoder-decoder CNN结构出发&…

sd模型测试之唐伯虎点秋香

周星驰拍过一个喜剧电影,叫《唐伯虎点秋香》。 其实唐伯虎是一个悲剧人物。 唐伯虎本名唐寅,字伯虎,后改字子畏,号六如居士、桃花庵主、鲁国唐生、逃禅仙吏等,南直隶苏州府吴县人。明代著名画家、书法家、诗人。 他…

iTransformer: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING

#论文题目:ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING #论文地址:https://arxiv.org/abs/2310.06625 #论文源码开源地址:https://github.com/thuml/Time-Series-Library #论文所属会议:Mach…

《RT-DETR改进实战》专栏介绍 专栏目录《限时特惠中》

《RT-DETR改进实战专栏》介绍及目录 介绍:欢迎来到最新专栏《RT-DETR改进实战》!这个专栏专注于基于 YOLOv8 项目的魔改版本,而不是百度飞桨框架中的 RT-DETR。 本专栏为想通过改进 RT-DETR 算法发表论文的同学设计。每篇文章均包含完整的改…

MyBatis-Flex(一):快速开始

框架介绍 MyBatis-Flex 是一个优雅的 MyBatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。 MyBatis-Flex 官方文档 说明 本文参照官方文档的【快速开始】 章节,编写 Spring Boot 项目的代码示例。 快速开始 创建数据库表 直接参照官网示…

fl studio 21.2.0.3842中文破解版2024最新V21.2完整版免费下载

fl studio 21.2.0.3842中文破解版2024最新V21完整的软件音乐制作环境或数字音频工作站(DAW)宿主软件。FL Studio,常称水果,是一款功能强大的编曲软件,集编曲,录音,剪辑,混音于一身,简单易上手&a…

一文带你彻底弄懂js事件循环(Event Loop)

JavaScript事件循环是JavaScript运行时环境中处理异步操作的机制。它允许JavaScript在执行同步代码的同时处理异步任务,以避免阻塞线程并提供更好的用户体验。 本文将在浏览器异步执行原理基础上带你彻底弄懂js的事件循环机制。 浏览器JS异步执行原理 js是单线程…

envi5.3处理高分二号影像数据辐射定标大气校正

目录 一、多光谱影像处理 1. 辐射定标 2.大气校正 1. 需要准备一些数据: 2.大气校正过程 3、正射校正 二、全色影像处理 1. 辐射定标 2. 正射校正 三、图像融合 1.几何配准 2.图像融合 高分二号处理流程 envi5.3的安装教程: ENVI5.3安装 安装完ENVI5.3后&#xff0…

陪诊系统|挂号陪护搭建二开陪诊师入驻就医小程序

我们的陪诊小程序拥有丰富多样的功能,旨在最大程度满足现代人的需求。首先,我们采用了智能排队系统,通过扫描二维码获取排号信息,让您从繁琐的排队过程中解放出来。其次,我们提供了多种支付方式,不仅可以实…