RabbitMQ在Java中的完美实现:从入门到精通

devtools/2024/11/13 9:41:02/

哈喽,大家好,我是木头左!

一、RabbitMQ简介

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。本文将详细介绍如何在Java项目中使用RabbitMQ。

二、环境搭建

2.1 安装Erlang

RabbitMQ是基于Erlang语言开发的,因此首先需要安装Erlang。请访问Erlang官网(https://www.erlang.org/downloads)下载并安装适合您操作系统的Erlang版本。

2.2 安装RabbitMQ

访问RabbitMQ官网(https://www.rabbitmq.com/download.html)下载并安装适合您操作系统的RabbitMQ版本。安装完成后,请确保RabbitMQ服务已启动。

三、Java项目中添加RabbitMQ依赖

在您的Java项目中,需要添加RabbitMQ Java客户端库的依赖。如果您使用的是Maven项目,请在pom.xml文件中添加以下依赖:

<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.13.0</version>
</dependency>

如果您使用的是Gradle项目,请在build.gradle文件中添加以下依赖:

implementation 'com.rabbitmq:amqp-client:5.13.0'

四、创建RabbitMQ连接工厂和连接

4.1 创建连接工厂

连接工厂是RabbitMQ中用于创建和管理连接的类。以下是创建连接工厂的方法:

java">import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;public class RabbitMQConnectionFactory {private static final String HOST = "localhost";private static final int PORT = 5672;private static final String USERNAME = "guest";private static final String PASSWORD = "guest";public static Connection getConnection() throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost(HOST);factory.setPort(PORT);factory.setUsername(USERNAME);factory.setPassword(PASSWORD);return factory.newConnection();}
}

4.2 创建连接和通道

连接是RabbitMQ中用于发送和接收消息的接口。以下是创建连接和通道的方法:

java">import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;public class RabbitMQChannel {private static final String QUEUE_NAME = "test_queue";private static final String EXCHANGE_NAME = "test_exchange";private static final String ROUTING_KEY = "test_routing_key";private static final int DELAY = 5000; // 延迟时间,单位:毫秒private static final boolean DURABLE = true; // 是否持久化消息,默认为trueprivate static final boolean AUTO_ACKNOWLEDGE = true; // 是否自动确认消息,默认为trueprivate static final boolean NON_BLOCKING = false; // 是否阻塞模式,默认为false(非阻塞)private static final int PRIORITY = 5; // 优先级,范围:0-9(0-5为普通优先级,4-9为加权优先级)private static final int TTL = 10; // 消息过期时间,单位:秒(0表示不过期)private static final boolean REQUEUE = false; // 是否重新入队消息,默认为false(不重新入队)private static final String CUSTOM_CONSUMER_TAG = "custom_consumer_tag"; // 自定义消费者标签,用于过滤消息,可选参数,默认为空字符串(不过滤)private static final String CUSTOM_PREFIXED_ROUTING_KEY = "custom_prefixed_routing_key"; // 自定义前缀路由键,用于过滤消息,可选参数,默认为空字符串(不过滤)private static final String[] CUSTOM_HEADERS = null; // 自定义头信息,用于过滤消息,可选参数,默认为null(不过滤)private static final String[] CUSTOM_DETAILS = null; // 自定义消息属性,用于过滤消息,可选参数,默认为null(不过滤)private static final String[] CUSTOM_APP_PROPERTIES = null; // 自定义应用属性,用于过滤消息,可选参数,默认为null(不过滤)private static final String[] CUSTOM_SEGMENT = null; // 自定义分段器名称,用于过滤消息,可选参数,默认为null(不过滤)private static final String[] CUSTOM_CONSUMER_GROUPS = null; // 自定义消费者组名称,用于过滤消息,可选参数,默认为null(不过滤)private static final String[] CUSTOM_RECEIVE_HANDLERS = null; // 自定义接收处理器名称,用于过滤消息,可选参数,默认为null(不过滤)private static final String[] CUSTOM_ACKNOWLEDGEMENT_HANDLERS = null; // 自定义确认处理器名称,用于过滤消息,可选参数,默认为null(不过滤)+
> 我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

http://www.ppmy.cn/devtools/12578.html

相关文章

深度学习中的熵、交叉熵、相对熵(KL散度)、极大释然估计之间的联系与区别

熵的最初来源于热力学。在热力学中&#xff0c;熵代表了系统的无序程度或混乱程度&#xff0c;也可以理解为系统的热力学状态的一种度量。后来被广泛引用于各个领域中&#xff0c;如信息学、统计学、AI等&#xff0c;甚至社会学当中。接下来将大家领略一下深度学习中熵的应用。…

G2024-04-24 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-24统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5TypeScript项目3PowerShell项目1C++项目1非开发语言项目1LLaMA模型的C/C++移植 创建周期:306 天开发语言:C, C++协议类型:MIT Li…

OpenCV 如何实现边缘检测器

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV如何实现拉普拉斯算子的离散模拟 下一篇 :OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数…

可商用的HuoCMS建站系统,基于thinkphp内核且免费开源

HuoCMS是一套内容管理系统&#xff0c;同时也是一套适用于企业官网建设的系统&#xff0c;能够帮助用户快速搭建个人网站。满足企业站、外贸站、个人博客等多种建站需求。HuoCMS的优势在于可以通过统一后台管理多个网站的内容&#xff0c;方便维护和共享不同内容在不同网站上的…

Visual Studio2022创建水晶报表项目

1.先下载Visual Studio 2022 &#xff0c;我选的是Community2022版本。 官网&#xff1a;Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com) 2.下载完成并安装后&#xff08;安装直接执行exe文件就ok&#xff09;&#xff0c;会出现一个界面。点击…

JavaScript不写 var 关键字的影响

在 JavaScript 中&#xff0c;在声明一个变量时&#xff0c;通常需要使用 var 关键字。var 关键字用来声明一个变量&#xff0c;并将其限定在当前的作用域内。不写 var 关键字会导致变量自动成为全局变量&#xff0c;即使在局部作用域中声明的变量也会变成全局变量。 这样的影…

jstack使用笔记

文章目录 六种Java线程状态jstack命令的基本使用jstack命令的参数选项jstack命令的应用场景jstack常用命令 六种Java线程状态 新建状态&#xff08;New&#xff09;&#xff1a; 当创建一个Thread实例后&#xff0c;线程就处于新建状态。此时线程对象已经被分配了内存&#xf…

Docker 部署Java程序以及常用命令详解

文章目录 关于 docker 安装以及部署项目1. CentOS 中安装 Docker2. VMware中镜像拉取失败3. idea 远程连接Docker4. dockerfile 部署 springboot 项目5. 创建JDK运行环境配置6. docker 查询容器运行日志7. docker 容器将镜像中的文件拷贝到宿主机8. docker 部署mysql9. 容器中下…