添加Maven依赖:

使用rabbitmq-client的最新Maven坐标:

<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.3.0</version>
</dependency>

添加账户

默认情况下,访问RabbitMQ服务的用户名和密码都是“guest”,这个账号有限制,默认只能通过本地网络(如localhost)访问,远程网络访问受限,所以在实现生产和消费消息之前,需要另外添加一个用户,并设置相应的访问权限。

添加新用户,用户名为“zifeiy”,密码为“passwd”:

rabbitmqctl add_user zifeiy passwd

为zifeiy用户设置所有权限:

rabbitmqctl set_permissions -p / zifeiy ".*" ".*" ".*"

设置用户zifeiy为管理员角色:

rabbitmqctl set_user_tags zifeiy administrator

计算机的世界是从“Hello World!”开始的,这里我们也沿用惯例,首先生产者发送一条消息”Hello World!“至RabbitMQ中,之后由消费者消费。
下面先演示生产者客户端的代码,然后再演示消费者客户端的代码。

生产者客户端代码

import java.io.IOException;
import java.util.concurrent.TimeoutException;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;public class RabbitProducer {private static final String EXCHANGE_NAME = "exchange_demo";private static final String ROUTING_KEY = "routingkey_demo";private static final String QUEUE_NAME = "queue_demo";private static final String IP_ADDRESS = "127.0.0.1";private static final int PORT = 5672; // RabbitMQ服务端默认端口号为5672public static void main(String[] args) throws IOException, TimeoutException {ConnectionFactory factory = new ConnectionFactory();factory.setHost(IP_ADDRESS);factory.setPort(PORT);factory.setUsername("zifeiy");factory.setPassword("passwd");Connection connection = factory.newConnection();   // 建立连接Channel channel = connection.createChannel();       // 创建信道// 创建一个type="direct"、持久化的、非自动删除的交换器channel.exchangeDeclare(EXCHANGE_NAME, "direct", true, false, null);// 创建一个持久化、非排他的、非自动删除的队列channel.queueDeclare(QUEUE_NAME, true, false, false, null);// 将交换器和队列通过路由绑定channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY);// 发送一条持久化的消息:hello world!String message = "hello,world!";channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());// 关闭资源channel.close();connection.close();}
}

运行。

消费者客户端代码

import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Address;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.Connection;public class RabbitConsumer {private static final String QUEUE_NAME = "queue_demo";private static final String IP_ADDRESS = "127.0.0.1";private static final int PORT = 5672;public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {Address[] addresses = new Address[] {new Address(IP_ADDRESS, PORT)};ConnectionFactory factory = new ConnectionFactory();factory.setUsername("zifeiy");factory.setPassword("passwd");// 这里的连接方式与生产者的demo略有不同,注意区分Connection connection = factory.newConnection(addresses);    // 创建连接final Channel channel = connection.createChannel(); // 创建信道channel.basicQos(64);    // 设置客户端最多接受未被ack的消息的个数Consumer consumer = new DefaultConsumer(channel) {@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("recv message: " + new String(body));try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}channel.basicAck(envelope.getDeliveryTag(), false);}};channel.basicConsume(QUEUE_NAME, consumer);// 等待回调函数执行完毕后,关闭资源TimeUnit.SECONDS.sleep(5);channel.close();connection.close();}
}

运行,命令行输出如下:

recv message: hello,world!

RabbitMQ生产者和消费者Java实现相关推荐

  1. rabbitmq 生产者和消费者

    生产者 下面展示一些 内联代码片. import java.util.Date; import java.util.HashMap; import java.util.Map;import com.d ...

  2. Go 学习笔记(57)— Go 第三方库之 amqp (RabbitMQ 生产者、消费者整个流程)

    1. 安装 rabbitmq 的 golang 包 golang 可使用库 github.com/streadway/amqp 操作 rabbitmq .使用下面命令安装 RabbitMQ . go ...

  3. kafka生产者、消费者java示例

    1. 生产者 import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.producer.Ke ...

  4. rabbitmq生产者和消费者

    如果你曾经在工作中使用过网络软件,脑海中应该会有客户端和服务器端的概念.不管是浏览器和Web服务器,还是应用程序和MySQL服务器,都是其中一方发送请求,而另一方服务这些请求.你可以将其视为快餐车模式 ...

  5. Spring Cloud Stream与RabbitMQ 生产者和消费者位于同一个应用服务

    第一种模型:交换机类型为topic,路由key为"#",这是简单的使用模型 当前Spring Cloud Rabbit的版本为2.1.2 <dependency>< ...

  6. SpringBoot整合RabbitMQ(包含生产者和消费者)

    生产者 创建一个SpringBoot项目springboot-producer,作为RabbitMQ的生产者. 在pom文件中引入相关的依赖坐标 <dependency><group ...

  7. mq多个消费者消费一个消息_消息中间件——RabbitMQ(五)快速入门生产者与消费者...

    求关注 快速入门生产者与消费者,SpringBoot整合RabbitMQ! 前言 本章我们来一次快速入门RabbitMQ--生产者与消费者.需要构建一个生产端与消费端的模型.什么意思呢?我们的生产者发 ...

  8. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器

    本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...

  9. RabbitMQ(三) HelloWorld 单生产者单消费者示例实现

    一.创建Maven工程,引入RabbitMQ依赖. pom.xml 如下: <?xml version="1.0" encoding="UTF-8"?&g ...

最新文章

  1. linux centos7 替换yum源
  2. 必须要用发展的眼光来看诺基亚和微软的合作
  3. Ext-ajax请求数据
  4. django 路由分发 url分层
  5. 零基础入门图像语义分割必备概念整理,复制文件内容到Word观看效果更佳
  6. Adobe Acrobat Pro9.3
  7. 【C++软件开发】面试经典题目汇总
  8. matlab 非线性误差,matlab处理非线性误差估计.doc
  9. 清明出行之高德路况思考
  10. 远程数据库对象 Mmzrmo4Delphidelphi盒子
  11. Sketch 快捷键速记表(中英对照)
  12. 浅谈CAS,一篇就够了
  13. 爱数中标浙江红蜻蜓鞋业云共享项目
  14. GPU服务器使用教程
  15. 查询快递单号物流,筛选出代收的单号
  16. myBase/Webcollect网页插件
  17. linux硬盘分区(fdisk、lsblk)-------------------基础命令练习(一)
  18. 基于Android驾校理论模拟考试系统APP
  19. 【thinkPhP】96PHPCN音乐电台(支持收听酷狗收费音乐)
  20. 74、mac安装一些软件踩过的坑

热门文章

  1. 使用反射获得jar包中的类、方法、参数、返回值类型,然后动态加载jar包运行方法
  2. Leetcode每日一题:21.merge-two-sorted-lists(合并两个有序链表)
  3. Old ST-LINK firmware detected.do you want to upgrade it?已解决,stlink升级
  4. normandie出错重试与缓存机制对交互的影响,开发者注意
  5. 吴恩达机器学习 神经网络 作业1(用已经求好的权重进行手写数字分类) Python实现 代码详细解释
  6. 网狐 游戏服务器 没有反应_游戏行业该怎么选择服务器?
  7. 若依微服务如何设置令牌有效期?
  8. Linux配置JAVA环境变量(图文教程)
  9. vue中使用lazyload实现图片懒加载
  10. 利用Linux搭建SVN服务器,详细过程