RabbitMQ 之 HelloWorld(生产者-消费者)

RabbitMQ 之 HelloWorld(生产者-消费者)

安装rabbitmq环境

见上一篇文章rabbitmq安装

pom.xml


    4.0.0

    com.atguigu.rabbitmq
    rabbitmq-hello
    1.0-SNAPSHOT

                org.apache.maven.plugins
                maven-compiler-plugin

                    8
                    8

            com.rabbitmq
            amqp-client
            5.8.0

            commons-io
            commons-io
            2.6

            org.slf4j
            slf4j-simple
            1.7.25
            compile

生产者代码

package com.atguigu.rabbitmq.one;

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

/**
 * @author : LayTao
 * @description :生产者-发消息
 * @date :  2022年09月05日
 */
public class Producer {
    //队列名称
    public static final String QUEUE_NAME = "hello";

    //发消息
    public static void main(String[] args) throws Exception {
        //创建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //工厂ip连接RabbitMQ的队列
        factory.setHost("192.168.10.100");
        //用户名
        factory.setUsername("admin");
        //密码
        factory.setPassword("123");

        //创建连接
        Connection connection = factory.newConnection();
        //获取通道
        Channel channel = connection.createChannel();

        /**
         * 生成一个队列
         * 1、队列名称
         * 2、队列里面的消息是否持久化(磁盘)默认情况消息存储在内存中
         * 3、该队列是否只提供一个消费者进行消费,是否进行消息共享,true可以共享,false只能一个消费者消费
         * 4、是否自动删除,最后一个消费者断开连接后,该队列是否自动删除,true 自动删除,false不自动删除
         * 5、其他参数
         */
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);
        //发消息
        String message = "hello world";
        /**
         * 发送一个消息
         * 1、发送到那个交换机
         * 2、路由的key值是哪个,本次是队列名称
         * 3、其他参数信息
         * 4、发送消息的消息体
         */
        channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
        System.out.println("发送消息完毕!");
    }
}

消费者代码

package com.atguigu.rabbitmq.one;

import com.rabbitmq.client.*;

/**
 * @author : LayTao
 * @description :消费者 接收消息
 * @date :  2022年09月08日
 */
public class Consumer {
    //队列名称
    public static final String QUEUE_NAME = "hello";

    // 接收消息
    public static void main(String[] args) throws Exception {
        //创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //工厂ip连接RabbitMQ的队列
        factory.setHost("192.168.10.100");
        //用户名
        factory.setUsername("admin");
        //密码
        factory.setPassword("123");

        //创建连接
        Connection connection = factory.newConnection();
        //获取通道
        Channel channel = connection.createChannel();

        // 声明 接收消息
        DeliverCallback deliverCallback = ( consumerTag, message) ->{
            System.out.println(new String(message.getBody()));
        };

        // 取消消息时的回调
        CancelCallback cancelCallback = consumerTag -> {
            System.out.println("消息消费被中断!");
        };

        /**
         * 消费者消费消息
         * 1、消费者哪个队列
         * 2、消费成功之后是否要自动应答 true 自动应答 false 手动应答
         * 3、消费者成功消费的回调
         * 4、消费者未成功的消费回调
         */
        channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);
    }
}

效果

RabbitMQ 之 HelloWorld(生产者-消费者)
RabbitMQ 之 HelloWorld(生产者-消费者)

Original: https://www.cnblogs.com/lovexiao/p/16669408.html
Author: 潇潇love涛涛
Title: RabbitMQ 之 HelloWorld(生产者-消费者)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/593125/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Idea新建springboot工程,需要使用外部的配置文件

    需求:使用Idea新建springboot工程,需要使用外部的配置文件, 整体的目录结构如下: Spring Boot启动会扫描以下位置的application.propertie…

    Java 2023年5月29日
    070
  • Java面试题(十)–Spring Cloud

    1 基础知识篇 1、什么是微服务架构? 微服务架构是一种架构模式或者说是架构风格,它提倡将单一应用程序划分成一组小的服务。每个服务运行在其独立的自己的进程中服务之间相互配合、相互协…

    Java 2023年6月9日
    088
  • AWS Lambda 借助 Serverless Framework,迅速起飞

    前言 微服务架构有别于传统的单体式应用方案,我们可将单体应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作时不会互相影响 这种设计理念被进…

    Java 2023年6月5日
    075
  • 软件测试 对前一日函数的基本路径测试

    基本路径测试 实验要求: 请采用基本路径方法对前一日函数进行测试用例设计。 根据互换所得代码,画出流程图,流图,计算圈复杂度,给出独立路径,设计测试用例,执行测试。 比较预期结果和…

    Java 2023年6月5日
    066
  • Mina的IoBuffer改造成Netty的ByteBuff

    背景:部标GPS通讯底层全部改造成基于Netty服务器实现的,现将Mina的依赖移除,修改过程中有用到缓冲区的读写。现做了如下修改: 原有基于Mina的IoBuffer对字节读写封…

    Java 2023年6月9日
    067
  • 2020-为什么换了工作

    摘要 经历了一个特殊的2020上半年,疫情出乎意料的持续了半年之久,还是没有看到结束的趋势。虽然外部环境很恶劣,还是做出了个人的重大选择,换工作。期间纠结了很久,毕竟工作就是生活,…

    Java 2023年6月8日
    087
  • Java类的主动使用和被动使用-面试题

    所有的java虚拟机实现必须在每个类或接口被java程序”首次主动使用”时才初始化他们 被动使用不会初始化类,但是有可能会加载类(JVM规范里没有说明)并且…

    Java 2023年5月29日
    0103
  • Java8之stream流的分组排序

    关于Java8的stream流,这里不讲groupBy分组,也不讲sort排序,这些都是很基础的用法,可以自行百度。 这里说一种业务场景,对于分组后的map,根据value对key…

    Java 2023年6月9日
    067
  • [Java]《On Java》阅读记录之 — 可变参数重载问题

    有下面一段代码: public class OverloadingVarargs2 { static void f(float i , Character… args) { S…

    Java 2023年6月5日
    069
  • 1.2 w字+!Java IO 基础知识系统总结 | JavaGuide

    首发于:JavaGuide(「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。)原文地址:https://javaguide.cn/java/io/i…

    Java 2023年6月9日
    077
  • Spring Cloud Feign+Hystrix自定义异常处理

    开启Hystrix spring-cloud-dependencies Dalston版本之后,默认Feign对Hystrix的支持默认是关闭的,需要手动开启。 feign.hys…

    Java 2023年6月6日
    094
  • 开源基础框架 csx-bsf-all【开源】【原创】

    Git地址 技术架构 BSF 为 base service framework 的简写,定义为技术团队的基础框架,用于基础服务的集成和跟业务无关的基础技术集成。 BSF集成了自研的…

    Java 2023年6月8日
    084
  • Sharding-jdbc 5.1.2案例

    简介 sharding-jdbc案例,版本5.1.2 springboot + mybatis-plus + sharding-jdbc 项目地址:sharding-jdbc-ex…

    Java 2023年6月16日
    081
  • 如何去官网下载JDK (JDK8 JDK1.8)

    posted @2022-01-12 16:23 戈博折刀 阅读(119 ) 评论() 编辑 Original: https://www.cnblogs.com/libin6505…

    Java 2023年5月30日
    091
  • VSCode个性化的配置(QIUQIU&LL)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月7日
    083
  • 平台接口建设规范

    建设目标 平台接口建设规范旨在为接口开发、测试、使用划定一个框架边界,明确技术目标与要求,并要求提供完备的接口文档说明,为自有平台与第三方平台提供数据及服务支持。 建设标准 接口规…

    Java 2023年6月9日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球