一、创建Maven工程,引入RabbitMQ依赖。

pom.xml 如下:

<?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>RabbitMQ</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.6.0</version></dependency></dependencies>
</project>

二、创建获取连接工具类 ConnectionUtils

通过创建连接工厂对象,并进行响应的设值操作之后,通过newConntection方法我们获取到一个新的连接。

package com.xiaohui.rabbitmq.utils;import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;public class ConnectionUtils {public static Connection getConnection() throws IOException, TimeoutException {//创建连接工厂ConnectionFactory connectionFactory = new ConnectionFactory();//设置主机地址connectionFactory.setHost("172.18.255.186");//设置连接端口connectionFactory.setPort(5672);//设置虚拟主机地址connectionFactory.setVirtualHost("/myhost");//设置链接用户名以及密码connectionFactory.setUsername("xiaohui");connectionFactory.setPassword("root");//创建连接Connection connection = connectionFactory.newConnection();return connection;}
}

通过官网资料查看如果不设置用户密码等信息,系统会默认的给一些初始化值,通过源码我们也可以看到。

三、创建Producter.java 编写生产者代码

在编写消息发送代码时,我们首先需要获取Connection链接对象。在进行信道创建、声明消息队列信息、发送消息等步骤进行发送消息到mqserver上。然后可以进行关闭渠道以及连接对象。

其中通过源码注解我们可以知道在声明消息队列时一些相关参数含义:

Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,
                                 Map<String, Object> arguments) throws IOException;

第一个参数表示消息队列名称;第二个参数表示是否独占链接、第三个表示是否持久化消息(mq重启后之前的消息还存在不丢失)、第四个表示是否自动在不使用时自动删除队列(不是删除消息)

package com.xiaohui.rabbitmq.simple;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.xiaohui.rabbitmq.utils.ConnectionUtils;
import java.io.IOException;
import java.util.concurrent.TimeoutException;/*** 生产者*/
public class Producer {public static final  String QUEUE_NAME = "simple_queue";public  static void main(String[] args) throws IOException, TimeoutException {Connection connection = ConnectionUtils.getConnection();//创建渠道Channel channel = connection.createChannel();//声明创建队列channel.queueDeclare(QUEUE_NAME,true,false, false, null);//发送消息String msg = "再来一条hahahah。。。。";channel.basicPublish("",QUEUE_NAME,null,msg.getBytes());//释放资源(关闭渠道 以及连接)channel.close();connection.close();}
}

四、创建Cunsumer.java 编写消费者代码

主要步骤:

  1. 获取连接对象
  2. 使用连接对象创建信道
  3. 声明和生产者相同的消息队列
  4. 创建一个消息监听对象,并实现一个完成接受的一个回调函数实现信息打印(非必须)
  5. 设置开始监听
package com.xiaohui.rabbitmq.simple;import com.rabbitmq.client.*;
import com.xiaohui.rabbitmq.utils.ConnectionUtils;import java.io.IOException;
import java.util.concurrent.TimeoutException;public class Cunsumer {public static void main(String[] args) throws IOException, TimeoutException {//创建消费端链接Connection connection = ConnectionUtils.getConnection();//创建消费端渠道Channel channel = connection.createChannel();//声明消费队列channel.queueDeclare(Producer.QUEUE_NAME, true,false,false,null);//监听消息DefaultConsumer consumer = new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("路由的key为:"+envelope.getRoutingKey());System.out.println("交换机为:"+envelope.getExchange());System.out.println("消息ID为:"+envelope.getDeliveryTag());System.out.println("收到的消息为:"+new String(body,"UTF-8"));System.out.println("=====================================");}};/*** 第二个参数表示是否 向mqserver自动回复收到* 第三个参数表示消息回调*/channel.basicConsume(Producer.QUEUE_NAME,true,consumer);//这里不关闭资源}}

RabbitMQ(三) HelloWorld 单生产者单消费者示例实现相关推荐

  1. 操作系统(二十五)吸烟者问题-单生产者多消费者问题

    2.3.8 吸烟者问题-单生产者多消费者问题 假设一个系统有三个抽烟者进程和一个供应者进程.每个抽烟者不停地卷烟并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草.纸和胶水.三个抽烟者中,第 ...

  2. 并发无锁队列学习(单生产者单消费者模型)

    1.引言 本文介绍单生产者单消费者模型的队列.依据写入队列的内容是定长还是变长,分为单生产者单消费者定长队列和单生产者单消费者变长队列两种. 单生产者单消费者模型的队列操作过程是不须要进行加锁的.生产 ...

  3. kafka查看broker上主副本_Kafka基础(一):基本概念及生产者、消费者示例

    本文章大部分内容均摘自 朱忠华老师的<深入理解Kafka:核心设计与实践原理>,也特别推荐广大读者购买阅读. 一.概述 1. 简介 Kafka 起初是由 LinkedIn 公司采用 Sca ...

  4. 从现在开始学 Kafka:SpringBoot 集成 Kafka,生产者与消费者示例

    从现在开始学 Kafka:SpringBoot 集成 Kafka,生产者与消费者示例 前言 加依赖 生产者 加配置 生产者代码示例 消费者 加配置 消费者监听器示例 调用 关于 Serializer ...

  5. RabbitMQ入门4:生产者、消费者演示;多个消费者平均压力、公平派遣;

    说明: (1)内容说明: ● 这儿我们会创建一个项目,演示RabbitMQ最基础的内容: 通过,这个最简单的例子,先了解:如何使用RabbitMQ,如何连接RabbitMQ,如何发送消息,如何接收消息 ...

  6. 多线程-线程间通信-多生产者多消费者示例

    1.多线程-线程间通信-多生产者多消费者问题 多生产者和多消费者.等待唤醒机制. 产生了两个问题: 1.出现了多次连续生产,未消费,或者一个商品被消费多次. 解决:必须要--------每一个被唤醒的 ...

  7. Rabbitmq 消息对列 生产者与消费者的具体实现 springboot

    RabbitMQ 基本介绍 RabbitMQ的设计理念是.只要有接收消息的队列. 邮件就会存放到队列里. 直到订阅人取走. . 如果没有可以接收这个消息的消息队列. 默认是抛弃这个消息的.. 我实现的 ...

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

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

  9. RabbitMq(七) Topic模式介绍及代码示例

    概述: 在上一文章中我们介绍了路由模式(Routing),routing模式是不同的消息队列绑定了不同的路由key,但是我们看出路由key为固定的字符串标记.而本章中的Topic模式则为在路由模式下, ...

最新文章

  1. amf java_java – 不支持的AMF版本
  2. FFT镜头效果的新进展
  3. PV、UV、IP的区别
  4. Scala隐式转换动态丰富类库功能
  5. ubuntu中解决无法调节屏幕亮度的问题
  6. 图片加马(一句话木马)
  7. JavaScript基础01
  8. 我是如何实用:before :after
  9. 马斯克:特斯拉Model S Plaid交付时间将推迟至6月10日
  10. 如何用python做界面_Python+AutoIt实现界面工具开发
  11. Centos5上安装JRE和LUMAQQ
  12. Python3基础语法
  13. python3.7 matplotlib增加坐标说明_python matplotlib:如何在极坐标图中的轴和刻度标签之间插入更多空格?...
  14. TensorFlow手把手教你概率编程:TF Probability内置了开源教材,新手友好
  15. 【HDFS】hdfs与fsck结合使用
  16. 学习matlab(十八)——小波分析
  17. 江苏2021高考成绩查询全省排名,2021江苏省地区高考成绩排名查询,江苏省高考各高中成绩喜报榜单...
  18. python爬取去哪儿网机票_5元机票?去哪儿网及深航回应:未发现售价5元的机票订单...
  19. 学生搭配问题数据结构报告c语言,数据结构课程设计_学生搭配问题.doc
  20. linux 7进入目录的命令,centos7目录统计之du命令

热门文章

  1. AxWebBrowser打开本地文件
  2. Javascript学习笔记8——用JSON做原型
  3. 使用PagedDataSource类实现DataList和Repeater控件的分页显示
  4. MySQL客户端mysql常用命令
  5. web导入excel数据
  6. Spring异常重试机制 - Spring Retry
  7. unicode html转义字符,HTML转义字符 Unicode和CSS伪类介绍(示例代码)
  8. python 服务器框架_python 服务器框架
  9. zookeeper和Kafka的关系
  10. git指令如何葱master转到dev_小姐姐用动画图解Git命令,一看就懂!