1.生产者
/*** rabbitMQ入门程序消费者** @author xiaoss* @date 2020年10月27日 22:02*/
public class Producer01 {//队列private static final String QUEUE="helloworld_01";public static void main(String[] args) {//通过连接工厂创建新的连接和mq建立连接ConnectionFactory connectionFactory=new ConnectionFactory();connectionFactory.setHost("127.0.0.1");//连接主机地址connectionFactory.setPort(5672);//设置端口connectionFactory.setUsername("guest");connectionFactory.setPassword("guest");//设置虚拟机,一个mq服务可以设置多个虚拟机,每个虚拟机就相当于一个独立的mqconnectionFactory.setVirtualHost("/");Connection connection=null;try {//建立新连接connection=connectionFactory.newConnection();//创建会话通道,生产者和mq服务 所有的通信都在channel通道中完成Channel channel=connection.createChannel();//监听队列//声明队列,如果队列在mq 中没有则要创建//参数:String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments/*** 参数明细* 1、queue 队列名称* 2、durable 是否持久化,如果持久化,mq重启后队列还在* 3、exclusive 是否独占连接,队列只允许在该连接中访问,如果connection连接关闭队列则自动删除,如果将此参数设置true可用于临时队列的创建* 4、autoDelete 自动删除,队列不再使用时是否自动删除此队列,如果将此参数和exclusive参数设置为true就可以实现临时队列(队列不用了就自动删除)* 5、arguments 参数,可以设置一个队列的扩展参数,比如:可设置存活时间*/channel.queueDeclare(QUEUE,true,false,false,null);//发送消息String message="hello rabbitMQ";/*** 参数明细* 1.exchange:交换机,如果不指定就使用默认的mq交换机* 2.routingKey:路由key,交换机根据路由key将消息发送到指定的队列,如果使用默认交换机,路由key设置为队列的名称* 3.props:消息属性* 4.body:消息内容*/channel.basicPublish("",QUEUE,null,message.getBytes());System.out.println("send to mq"+message);} catch (Exception e) {e.printStackTrace();} finally {}}
}

运行main方法,打开http://localhost:15672/

就会创建一个helloworld_01的队列,有一条消息等待消费

Ready:待消费的消息总数。

Unacked:待应答(待确认)的消息总数。
Total:总数 Ready+Unacked

2.创建消费者

/*** 入门程序消费者** @author xiaoss* @date 2020年10月27日 23:48*/
public class Consumer01 {//队列private static final String QUEUE="helloworld_01";public static void main(String[] args) {//通过连接工厂创建新的连接和mq建立连接ConnectionFactory connectionFactory=new ConnectionFactory();connectionFactory.setHost("127.0.0.1");//连接主机地址connectionFactory.setPort(5672);//设置端口connectionFactory.setUsername("guest");connectionFactory.setPassword("guest");//设置虚拟机,一个mq服务可以设置多个虚拟机,每个虚拟机就相当于一个独立的mqconnectionFactory.setVirtualHost("/");Connection connection=null;try {//建立新连接connection=connectionFactory.newConnection();//创建会话通道,生产者和mq服务 所有的通信都在channel通道中完成Channel channel=connection.createChannel();//监听队列//声明队列,如果队列在mq 中没有则要创建//参数:String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments/*** 参数明细* 1、queue 队列名称* 2、durable 是否持久化,如果持久化,mq重启后队列还在* 3、exclusive 是否独占连接,队列只允许在该连接中访问,如果connection连接关闭队列则自动删除,如果将此参数设置true可用于临时队列的创建* 4、autoDelete 自动删除,队列不再使用时是否自动删除此队列,如果将此参数和exclusive参数设置为true就可以实现临时队列(队列不用了就自动删除)* 5、arguments 参数,可以设置一个队列的扩展参数,比如:可设置存活时间*/channel.queueDeclare(QUEUE,true,false,false,null);//实现消费方法DefaultConsumer defaultConsumer=new DefaultConsumer(channel){/*** 当接收到消息后此方法将被调用* @param consumerTag  消费者标签,用来标识消费者的,在监听队列时设置channel.basicConsume* @param envelope 信封,通过envelope* @param properties 消息属性* @param body 消息内容* @throws IOException*/@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {//交换机String exchange = envelope.getExchange();//消息id,mq在channel中用来标识消息的id,可用于确认消息已接收long deliveryTag = envelope.getDeliveryTag();//消息内容String message= new String(body,"utf-8");System.out.println("receive message:"+message);}};//监听队列/*** 参数明细* 1.queue:队列名称* 2.autoAck:自动回复,当消费者接收到消息后要告诉mq消息已接收,如果将此参数设置为true表示自动回复mq,设置为false表示要通过编程实现回复* 3.callback:消费方法,当消费者接收到消息要执行的方法*/channel.basicConsume(QUEUE,true,defaultConsumer);} catch (Exception e) {e.printStackTrace();} finally {}}
}

说明刚才的消息已被消费

rabbitMQ入门程序相关推荐

  1. RabbitMQ的入门程序test测试代码

    RabbitMQ有以下几种工作模式 : 1.Work queues  工作队列 2.Publish/Subscribe 发布订阅 3.Routing      路由 4.Topics        通 ...

  2. RabbitMQ 入门系列(4)— RabbitMQ 启动、停止节点和应用程序、用户管理、权限配置

    1. 服务器管理 我们使用 "节点" 来指代 RabbitMQ 实例,当我们谈到 RabbitMQ 节点时指的是 RabbitMQ 应用程序和其所在的 Erlang 节点. 1.1 ...

  3. RabbitMQ入门学习系列(二),单生产者消费者

    友情提示 我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题.可以直接在公众号<爱码农爱生活 >留言.必定会再次 ...

  4. RabbitMQ入门:路由(Routing)

    在上一篇博客<RabbitMQ入门:发布/订阅(Publish/Subscribe)>中,我们认识了fanout类型的exchange,它是一种通过广播方式发送消息的路由器,所有和exch ...

  5. RabbitMQ入门-Topic模式

    上篇<RabbitMQ入门-Routing直连模式>我们介绍了可以定向发送消息,并可以根据自定义规则派发消息.看起来,这个Routing模式已经算灵活的了,但是,这还不够,我们还有更加多样 ...

  6. RabbitMQ入门到精通

    RabbitMQ 1. 消息中间件概述 1.1. 为什么学习消息队列 电子商务应用中,经常需要对庞大的海量数据进行监控,随着网络技术和软件开发技术的不断提高,在实战开发中MQ的使用与日俱增,特别是Ra ...

  7. RabbitMQ入门及笔记

    RabbitMQ 文章目录 RabbitMQ 1. RabbitMQ的安装 2. RabbitMQ的相关概念 2.1 RabbitMQ的概念 2.2 四大核心概念 2.3 RabbitMQ 核心部分 ...

  8. 【中间件】RabbitMQ入门学习笔记

    1 .消息队列 1.1. MQ的相关概念 (1) 什么是MQ MQ(messagequeue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进 ...

  9. RabbitMQ入门到掌握

    RabbitMQ入门到掌握 一.消息队列 1.MQ 的相关概念 1.2 什么是MQ 1.2 为什么要用MQ ①流量消峰 ②应用解耦 ③异步处理 1.3 MQ 的分类 ①ActiveMQ ②Kafka ...

最新文章

  1. Mysql提示缺少表的别名报错_mysql对sql中别名引起的Column not found问题
  2. 女程序员也有35岁危机焦虑吗?
  3. 如何禁用请求库中的日志消息?
  4. 如何解决ABBYY FineReader中表格检测不到问题
  5. 红帽linux系统轴控系统,红帽发布企业版 Linux(RHEL) 8.0
  6. 【LeetCode】——根据前序和中序遍历构建二叉树
  7. Vue:axios中POST请求传参问题
  8. Win7 下 VS2005 不能断点调试解决办法
  9. 清理oracle残留注册表,Oracle 卸载注册表残余文件清理
  10. 【计算机网络】SIP会话时,使用重定向与不使用重定向功能的区别
  11. Frammer X for mac(mac高清视频截图工具)
  12. 当电子工程师十余年,感慨万千
  13. 数据结构折半查找例题_查找(习题课)
  14. 年轻人的第一个开发板——树莓派
  15. Docker目录映射
  16. 电脑主板详细介绍(细图!!)
  17. 【对讲机的那点事】手把手教你给摩托罗拉C1200数字对讲机写频
  18. lightning接口_带你回看手机接口发展史:TypeC将实现大一统?
  19. 软装和硬装又有哪些不同?
  20. 【线性代数】4-2:投影(Porjections)

热门文章

  1. 安装Oracle11g先决条件检查失败
  2. 微服务实战之春云与刀客(三)—— 面向接口调用代码结构实例
  3. Openreach与华为/诺基亚签署G.fast协议
  4. Oracle的Java模块化系统保卫战
  5. ListView和数据适配器SimpleAdapter例子
  6. Angular - - ngReadonly、ngSelected、ngDisabled
  7. Lichee(三) Android4.0该产品的目标文件夹,Lichee链接---extract-bsp
  8. 'libxml/tree.h' file not found
  9. Unity3D脚本属性
  10. OpenCV学习(20) grabcut分割算法