Java连接rabbitMQ(三步超简单)

这篇具有很好参考价值的文章主要介绍了Java连接rabbitMQ(三步超简单)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

rabbitMQ安装教程网上特别多就不多赘述,这里主要说一下怎么去连接

第一步,创建工程添加依赖

创建一个Maven项目,打开pom.xml,添加两个依赖,并更新Maven。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>rabbitMQdemo</artifactId>
    <version>1.0-SNAPSHOT</version>

------------添加下面两个依赖------------

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

</project>

第二步,配置连接

在src->main->java中新建一个文件夹utils,在此文件夹中添加class:rabbitMQUtils

package utils;

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

public class RabbitMQUtils {

    private static final ConnectionFactory factory;

    static {
        factory = new ConnectionFactory();
        factory.setHost("126.239.25.24");  // 换成自己的ip
        factory.setPort(5672);  // 一般默认端口为5672
        factory.setUsername("root");  
        factory.setPassword("123456");
        factory.setAutomaticRecoveryEnabled(true);  // 开启Connection自动恢复功能
        factory.setNetworkRecoveryInterval(5000);
        factory.setVirtualHost("/");
        factory.setConnectionTimeout(30 * 1000);
        factory.setHandshakeTimeout(30 * 1000);
        factory.setShutdownTimeout(0);
    }

    // 定义提供连接对象的方法
    public static Connection getConnection() {
        try {
            return factory.newConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    // 定义关闭通道和连接的方法
    public static void closeAll(Channel chan, Connection conn) {
        try{
            if(chan != null)  chan.close();
            if(conn != null)  conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

需要注意的是要将ip、用户名、密码更换成自己的,如果是在服务器上装的MQ记得在安全组中把端口放行,另外记得设置虚拟用户"/",或改成自己的虚拟用户名。

第三步,测试连接

使用直连测试连接效果,在src->main->java创建文件夹direct,添加两个class:consumer和producer。

package direct;

import com.rabbitmq.client.*;
import utils.RabbitMQUtils;
import java.io.IOException;

public class producer {

    public static void main(String[] args) throws IOException {

        Connection connection = RabbitMQUtils.getConnection();
        assert connection != null;
        final Channel channel = connection.createChannel();

        // 声明交换机
        channel.exchangeDeclare("direct_router", "direct", true, false, false, null);

        // 声明消息队列
        // 参数1: 队列名称
        // 参数2: 定义是否需要持久化队列,true为持久化
        // 参数3: 定义是否让当前连接独占队列,true为独占
        // 参数4: 是否在消费完成后自动删除队列,true为删除
        // 参数5: 额外附加参数,传入HashMap<String, Object>
        channel.queueDeclare("direct_queue", false, false, false, null);

        // 交换机与消息队列绑定
        channel.queueBind("direct_queue", "direct_router", "Dir-RQ");

        // 发送消息
        // 参数1: 交换机名称
        // 参数2: routingKey
        // 参数3: 若为true,则当消息无法送达指定队列时会触发channel.BasicReturn事件否则broker会将消息直接丢弃
        // 参数4: 传递消息的额外设置
        // 参数5: 发送消息内容
        String msg="direct producer message";
        channel.basicPublish("direct_router", "Dir-RQ", true, null, msg.getBytes());

        RabbitMQUtils.closeAll(channel, connection);
    }
}
package direct;

import com.rabbitmq.client.*;
import utils.RabbitMQUtils;
import java.io.IOException;

public class consumer {

    public static void main(String[] args) throws IOException, InterruptedException {

        Connection connection = RabbitMQUtils.getConnection();
        assert connection != null;
        final Channel channel = connection.createChannel();

        DefaultConsumer consumer = new DefaultConsumer(channel){
            @Override
            public void handleDelivery(
                    String consumerTag,
                    Envelope envelope,
                    AMQP.BasicProperties properties,
                    byte[] body
            ) throws IOException {

                // 打印消息
                String msg= new String(body, "utf-8");
                System.out.println(msg);

                // 应答机制 将队列中的消息删除掉,第二个参数为是否需要确认多个ACK
                channel.basicAck(envelope.getDeliveryTag(), false);
            }
        };

        // 接收消息
        // 参数1: 队列名称
        // 参数2: 是否自动签收消息,对应上面的应答机制,最好手动删,否则消费者多了可能会出问题
        channel.basicConsume("direct_queue", false, "ConsumerTag", consumer);

        Thread.sleep(20000);
        RabbitMQUtils.closeAll(channel, connection);
    }
}

右键运行consumer,20s内运行producer就能看见控制台中接收到了producer发出的消息。文章来源地址https://www.toymoban.com/news/detail-638373.html

到了这里,关于Java连接rabbitMQ(三步超简单)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java集成mqtt、rabbitmq服务远程连接数dtu实现寄存器rtu数据读写

    数据采集及写入流程设计图 一、硬件设备 硬件设备与原有设备保持不变通过配置dtu设备进行mqtt穿透功能进行数据交互 1、dtu配置详解: 1.1 dtu工具 本项目使用塔石TAS-LTE-364支持4G无线dtu模块,下载安装塔石物联网厂家提供的串口测试程序Tool V2.7.1 D20220616.exe 1.2打开程序选择对

    2024年02月03日
    浏览(45)
  • 【RabbitMQ 实战】09 客户端连接集群生产和消费消息

    下面的链接是最快最简单的一种集群部署方法 3分钟部署一个RabbitMQ集群 上的的例子中,没有映射端口,所以没法从宿主机外部连接容器,下面的yml文件中,暴露了端口。 每个容器应用都映射了宿主机的端口,分别是5602,5612,5622 docker compse文件如下 通过docker-compose up命令,

    2024年02月07日
    浏览(39)
  • 史上最简单RabbitMQ中IO流异常的解决 org.springframework.amqp.AmqpIOException: java.io.IOException 超级简单

    org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException     at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:73) ~[spring-rabbit-2.4.8.jar:2.4.8]     at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(Ab

    2024年02月06日
    浏览(48)
  • RabbitMQ:概念和安装,简单模式,工作,发布确认,交换机,死信队列,延迟队列,发布确认高级,其它知识,集群

    1.1.1.什么是MQ MQ(message queue:消息队列) ,从字面意思上看,本质是个 队列 , FIFO 先入先出 ,只不过队列中存放的 内容是message 而已 ,还是一种 跨进程的通信机制 , 用于上下游传递消息 。在互联网架构中,MQ 是一种非常常见的上下游 “逻辑解耦+物理解耦” 的消息通信服

    2024年01月20日
    浏览(75)
  • Java17稳妥升级计划「4步超详解」

    点击蓝字👆 关注Agilean,获取一手干货 最新直播资讯 Adapt 3.0 系列直播精彩继续中,本系列直播推出以来广受好评,许多伙伴咨询我们是否有回放,为了让大家更多参与直播互动,本系列直播暂不设置回放,所以感兴趣的伙伴们不要错过直播啦!快点约起来吧~ 导语 作为C

    2023年04月09日
    浏览(40)
  • RabbitMQ系列(3)--创建RabbitMQ的Java项目

    1、新建空项目 2、给项目起名称 3、创建空项目后为空项目创建Maven模块 (1)新建模块 (2)选择Maven模块 (3)为模块创建名称 4、给新建的项目设置JDK (1)打开项目结构 (2)把项目的JDK版本设置为JDK1.8 (3)把模块的JDK版本设置为JDK1.8 5、为项目设置Maven依赖和Maven仓库 (1)打开 设置 (2)搜索

    2023年04月09日
    浏览(44)
  • java中使用rabbitmq

    mq常用于业务解耦、流量削峰和异步通信,rabbitmq是使用范围较广,比较稳定的一款开源产品,接下来我们使用springboot的starter来引入rabbitmq,了解mq的几种使用模式,通过几个简单的案例,让你可以快速地了解到该使用哪种模式来对应业务场景,使用rabbitmq看这一篇就够了,下方附安

    2024年03月28日
    浏览(37)
  • RabbitMQ的使用(JAVA)

    目录 一、MQ的简介 二、MQ的作用 1、异步处理(同时处理多件事情) ​编辑 2、应用解耦(添加了一个中间件) ​编辑 3、流量控制(当秒杀的时候,可以限制流量) 三、Docker安装MQ  四、MQ的执行顺序 五、其他 1、Exchange 类型 ①Exchange的direct(默认) ②Exchange的fanout ③Exchange的

    2023年04月08日
    浏览(29)
  • RabbitMQ入门案例-Java

    什么是RabbitMQ Q全称为Message Queue,消息队列是应用程序和应用程序之间的通信方法。 为什么使用MQ         在项目中,可将一些无需即时返回且耗时的操作提取出来,进行 异步处理 ,而这种异步处理            的方式大大的节省了服务器的请求响应时间,从而 提高 了

    2024年02月03日
    浏览(41)
  • RabbitMQ系列(5)--使用Java实现RabbitMQ的消费者接收消息

    前言:先简单了解RabbitMQ的工作过程,方便后续开发理清思路 简略: 详细: 1、新建消费者类 效果图: 2、编写消费者消费消息的代码 例: 3、查看代码运行结果 运行代码后如果有输出生产者发送的”Hello World”信息,则证明消费者消费消息成功 4、在web页面上查看队列的消

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包