一.环境准备

所需jar包,在Rabbitmq中版本不匹配是很常见的问题,所以如果版本不匹配,需要及时进行更换操作,参考RabbitMQ版本3.6.6

序号 jar
1 amqp-client-4.1.1.jar
2 log4j-1.2.17.jar
3 slf4j-1.7.21.jar

二.创建队列

RabbitMQ Management创建队列选项说明

Name:队列的名字必须唯一,不可重复


Durability:消息保存类型

名称 类型 说明
Durable 持久化状态 在队列中未被消费者使用的信息,在RabbitMQ关闭后,再重启信息一直在
Transient 瞬时状态 在队列中未被消费者使用的信息,在RabbitMQ关闭后,再重启信息不存在


Auto delete:自动删除,建议选yes

此次创建一个名称为sjw.queue允许自动删除的持久化状态队列

大多数情况下并不需要自己进行受动化创建,可以用程序进行自动创建,视个人清空而定

三.创建生产者程序

消费者 MessageProducer.class

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;import java.io.IOException;
import java.util.concurrent.TimeoutException;public class MessageProducer {//RabbitMQ服务所在地址public final static String HOST="192.168.74.145";//RabbitMQ端口public final static int PORT=5672;//RabbitMQ登陆用户名public final static String USERNAME="sjw";//RabbitMQ登陆密码public final static String PASSWORD="haha";//队列名称public final static String QUEUE_NAME="sjw.queue";public static void main(String[] args) throws IOException, TimeoutException {//创建连接工厂ConnectionFactory factory=new ConnectionFactory();factory.setHost(HOST);factory.setPort(PORT);factory.setUsername(USERNAME);factory.setPassword(PASSWORD);//获取连接Connection connection=factory.newConnection();//获取信道,可以有多个信道Channel channel=connection.createChannel();//信道指定队列已经队列设置//queueDeclare(名字,是否持久化,独占的queue, 不使用时是否自动删除,其他参数)channel.queueDeclare(QUEUE_NAME,true,false,true,null);//在开始前获取一下当前时间,方便统计消息全部进入队列所需的时间long start=System.currentTimeMillis();for (int i=0;i<1000;i++){String message="sjw"+i;//basicPublish(exchange,队列名称,属性,参数.getbyte())channel.basicPublish("",QUEUE_NAME,null,message.getBytes());}//结束时间long end=System.currentTimeMillis();//输出所需时间System.out.println("进入队列总共耗时:"+(end-start));//关闭信道channel.close();//关闭连接connection.close();}
}

切记端口是5672,访问port不是15672,15672是api和管理界面的port.


查看队列

成功进入队列!!!

四.创建消费者程序

MessageConsumer.class

import com.rabbitmq.client.*;import java.io.IOException;
import java.util.concurrent.TimeoutException;public class MessageConsumer {//RabbitMQ服务所在地址public final static String HOST="192.168.74.145";//RabbitMQ端口public final static int PORT=5672;//RabbitMQ登陆用户名public final static String USERNAME="sjw";//RabbitMQ登陆密码public final static String PASSWORD="123";//队列名称public final static String QUEUE_NAME="lgq.queue";public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {//创建连接工厂ConnectionFactory factory = new ConnectionFactory();factory.setHost(HOST);factory.setPort(PORT);factory.setUsername(USERNAME);factory.setPassword(PASSWORD);//获取连接Connection connection = factory.newConnection();//获取信道,可以有多个信道Channel channel = connection.createChannel();//信道设置,必须与要对应接收的队列设置一模一样,有差别则无法接收你想要的信道channel.queueDeclare(QUEUE_NAME, true, false, true, null);QueueingConsumer consumer = new QueueingConsumer(channel);//信道交给consumer进行内容接收处理channel.basicConsume(QUEUE_NAME,consumer);while (true) {  //消费者程序运行开着 如果生产者新增了数据会自动获取// nextDelivery是一个阻塞方法(内部实现其实是阻塞队列的take方法)QueueingConsumer.Delivery delivery = consumer.nextDelivery();String message = new String(delivery.getBody());System.out.println("[消息]" + message);}}
}

运行结果

关闭程序,队列消失

RabbitMQ消费者与生产者示例相关推荐

  1. rabbitmq消费者获取消息慢_RabbitMQ:快速生产者和慢速消费者

    我有一个应用程序使用RabbitMQ作为消息队列来发送/接收两个组件之间的消息:发送者和接收者.发送者以非常快的方式发送消息.接收器接收到该消息,然后执行一些非常耗时的任务(主要是为非常大的数据大小编 ...

  2. 【深入理解RabbitMQ原理】RabbitMQ 配置,生产者和消费者

    RabbitMQ 配置,生产者和消费者 1. 生产者的配置 1)配置都要先声明队列 队列的声明方式: <rabbit:queueid="Bgate_Bgate1001Response_ ...

  3. RabbitMQ:消费者和生产者。

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

  4. 【原创】modb 功能设计之“支持多消费者单生产者”

    2019独角兽企业重金招聘Python工程师标准>>> 在< modb 开发之需求和总体设计 >中,第一个要实现的功能点就是 "支持多消费者单生产者" ...

  5. python 异步 生产者 消费者_python 生产者消费者模式 - 刘江的python教程

    生产者消费者模式 阅读: 9884 评论:4 利用多线程和队列可以实现生产者消费者模式.该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度. 什么是生产者和消费者? 在线程世界里, ...

  6. RabbitMQ消费者莫名丢失的问题解决

    RabbitMQ消费者莫名丢失的问题解决 一.问题描述 前段时间业务系统经常性出现某些队列无消费者导致消费累计无法计费的问题,为了赶紧保证系统使用只能紧急重启,但是发现刚重启时,确实消费者连接上了,也 ...

  7. RabbitMQ 消费者回执和发布确认

    为了保证数据安全,消费者和生产者的回执(ack)都是非常重要的. 由于我们无法保证消息都能像我们期望的那样,正常到达另一端或者被 Consumer 消费成功.因此,publisher 和 consum ...

  8. 生产rabbitMq消费者莫名其妙消失

    生产rabbitMq消费者莫名其妙消失 原因: 业务方发现2个系统数据一致性不对,立马就联系了我们技术人员,我们这两个系统通过 MQ 进行解耦的.所以第一时间是查看消息是否积压.发现mq中有500多条 ...

  9. CPFair:推荐系统的个性化消费者和生产者公平重新排序

    摘要 最近,人们越来越意识到,当机器学习 (ML) 算法用于自动化选择时,他们可能会不公平地对待/影响个人,具有法律.道德或经济后果.推荐系统是此类 ML 系统的重要示例,帮助用户做出高风险的判断. ...

最新文章

  1. 抽象工厂模式java_Java之抽象工厂模式(Abstract Factory)
  2. linux下的网络管理命令,常用linux网络管理命令(下)
  3. oracle密码文件认证,Oracle OS认证与口令文件认证详解
  4. 机器人码垛手持式编程_三分钟告诉你企业为什么要使用全自动码垛机械手!
  5. OSChina 周日乱弹 —— 我叫张一条
  6. mock接口开发,excel(读,写,修改)
  7. linux内核定时器编程
  8. eclipse中maven工程添加本地库至Maven Dependencies
  9. zynqpl端时钟_已解决: Zynq7020 PL侧时钟是50M,实测是49.5M - Community Forums
  10. simulink 状态空间加反馈报错
  11. SosoApi,编辑Swagger UI的神器
  12. 《我的人生哲学:马云献给年轻人的12堂人生智慧课》读后感
  13. android十进制转十六进制算法,十进制转十六进制计算器
  14. Rstudio插入Excel数据
  15. 关于手画猫,耳朵涂颜色
  16. vlan间路由的实现(思科模拟器)
  17. Java 将txt文本文档转换为excel
  18. ArcPy - 入门学习
  19. Java毕业设计 社区疫情防控管理系统
  20. 深入了解DataGridView控件

热门文章

  1. 手机上MEID和IMEI1和IMEI2是什么意思
  2. AE基础教程第一阶段——13消隐
  3. Big, green and mean 宏伟、绿色而狭隘 | 经济学人20230204版社论高质量双语精翻
  4. 宝鸡机电学院计算机中心电话,机电工程学院
  5. GLU, sparsemax, GELU激活函数
  6. 2021年10月TIOBE排行 榜首 Python yyds
  7. 我今年39岁了, 25岁研究生毕业,工作14年,回头看看,应该说走了不少的弯路
  8. C# winform使用scottplot图表控件快速入门设置XY轴缩放
  9. 网络攻击之信息收集阶段
  10. u3d游戏开发视频潭州_Unity MMORPG游戏开发教程(一)——初识Unity