RabbitMQ有以下几种工作模式 :

1、Work queues  工作队列

2、Publish/Subscribe 发布订阅

3、Routing      路由

4、Topics        通配符

5、Header      Header 转发器

6、RPC     远程调用

进入浏览器,输入:http://localhost:15672

初始账号和密码:guest/guest

Work queues  工作队列

test-rabbitmq-producer 生产者

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><parent><artifactId>xc-framework-parent</artifactId><groupId>com.xuecheng</groupId><version>1.0-SNAPSHOT</version><relativePath>../xc-framework-parent/pom.xml</relativePath></parent><artifactId>test-rabbitmq-producer</artifactId><dependencies>
<!--    <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>4.0.3</version>&lt;!&ndash;此版本与spring boot 1.5.9版本匹配&ndash;&gt;
</dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency>
</dependencies>
</project>
package com.xuecheng.test.rabbitmq;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;import java.io.IOException;
import java.util.concurrent.TimeoutException;/*** rabbitmq的入门程序** @author Administrator* @version 1.0* @create 2018-06-17 9:05**/
public class Producer01 {//队列private static final String QUEUE = "helloworld";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;Channel channel = null;try {//建立新连接connection = connectionFactory.newConnection();//创建会话通道,生产者和mq服务所有通信都在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 exchange, String routingKey, BasicProperties props, byte[] body/*** 参数明细:* 1、exchange,交换机,如果不指定将使用mq的默认交换机(设置为"")* 2、routingKey,路由key,交换机根据路由key来将消息转发到指定的队列,如果使用默认交换机,routingKey设置为队列的名称* 3、props,消息的属性* 4、body,消息内容*///消息内容String message = "hello world 黑马程序员";channel.basicPublish("",QUEUE,null,message.getBytes());System.out.println("send to mq "+message);} catch (Exception e) {e.printStackTrace();} finally {//关闭连接//先关闭通道try {channel.close();} catch (IOException e) {e.printStackTrace();} catch (TimeoutException e) {e.printStackTrace();}try {connection.close();} catch (IOException e) {e.printStackTrace();}}}
}

test-rabbitmq-consumer 消费者

package com.xuecheng.test.rabbitmq;import com.rabbitmq.client.*;import java.io.IOException;
import java.util.concurrent.TimeoutException;/*** 入门程序消费者* @author Administrator* @version 1.0* @create 2018-06-17 9:25**/
public class Consumer01 {//队列private static final String QUEUE = "helloworld";public static void main(String[] args) throws IOException, TimeoutException {//通过连接工厂创建新的连接和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 = 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);}};//监听队列//参数:String queue, boolean autoAck, Consumer callback/*** 参数明细:* 1、queue 队列名称* 2、autoAck 自动回复,当消费者接收到消息后要告诉mq消息已接收,如果将此参数设置为tru表示会自动回复mq,如果设置为false要通过编程实现回复* 3、callback,消费方法,当消费者接收到消息要执行的方法*/channel.basicConsume(QUEUE,true,defaultConsumer);}
}

RabbitMQ的入门程序test测试代码相关推荐

  1. RabbitMq的工作模式 介绍+测试代码,以及三种Exchange模式介绍.

    RabbitMq的提供了六种模式分别是:简单模式,工作模式,发布\订阅模式,路由模式,通配符模式,RPC远程调用模式 下面将详细介绍常用的前五种模式,附上测试代码. 公共的代码---连接工具类: pu ...

  2. 程序设计习惯养成计划---二、测试代码

    前言 没有测试代码的代码都是垃圾. 测试代码作用 测试代码的作用不言而喻,就是测试一下你的程序的正确性,如果你传到个人仓库中的代码并没有测试代码跟着,别的人也不知道你的代码正确与否,那么这个代码就相当 ...

  3. Rust 官方入门程序(a Guessing Game)解读

    Rust 入门程序解读 概述 代码 概述 本篇博客是对 Rust 官方提供的 a Guessing Game 的代码解读,所有的解读都以注释的形式出现在代码块中,让读者可以了解基本的关键字用法与程序语 ...

  4. 基于modelsim的十个Verilog入门试验程序(5)(数字秒表+自助售票机)—程序+测试代码+波形+结果分析

    内容 实验一:7人表决器的设计 实验二:算数逻辑单元的设计 实验三:JK触发器的设计 实验四:环形计数器的设计 实验五:顺序排列的设计 实验六:二进制除法器的设计 实验七:数字显示频率计的设计 实验八 ...

  5. 基于modelsim的十个Verilog入门试验程序(2)(JK触发器+环形计数器)—程序+测试代码+波形+结果分析

    内容 实验一:7人表决器的设计 实验二:算数逻辑单元的设计 实验三:JK触发器的设计 实验四:环形计数器的设计 实验五:顺序排列的设计 实验六:二进制除法器的设计 实验七:数字显示频率计的设计 实验八 ...

  6. 基于modelsim的十个Verilog入门试验程序(1)(7人表决器+算术逻辑单元)—程序+测试代码+波形+结果分析

    内容 实验一:7人表决器的设计 实验二:算数逻辑单元的设计 实验三:JK触发器的设计 实验四:环形计数器的设计 实验五:顺序排列的设计 实验六:二进制除法器的设计 实验七:数字显示频率计的设计 实验八 ...

  7. RabbitMQ工作模式Publish/Subscribe发布订阅,test测试代码

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

  8. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  9. python代码测试_Python入门学习系列——Python代码测试

    Python代码测试 对于编写的代码,可以使用unittest模块中的相关方法进行测试. 测试函数 首先定义一个简单的函数,该函数用来合并名称并返回. name_function.py: def ge ...

最新文章

  1. matlab考试试题,matlab-考试试题-
  2. Netstars CTO 陈斌:技术管理的两种思路
  3. php 英文引号转义,如何用引号转义php exec()命令
  4. kali锁屏后无法唤醒_看一下吧,自己对线程以及锁的概念和原理了解是否正确...
  5. AAC Explicit or Implicit SBR PS issue
  6. 【运动学】基于matlab平抛小球地面跳跃规律【含Matlab源码 981期】
  7. Java回调机制总结
  8. matlab 二维低通滤波器,matlab二维低通滤波器
  9. 计算机休眠唤醒后没声音,MacBook Pro从睡眠模式中唤醒后突然没有声音
  10. SpringBoot日志框架篇
  11. 『杨百万』投资理财报告会场面火爆
  12. 像容忍自己一样容忍他人
  13. cf登录游戏只显示服务器的字体,cf辅助灭天大神修复文件字体花样请求解决方法...
  14. PAT 十一章 模拟 17-24 自用
  15. 关于flv转成mp4的方法
  16. 第二天:非线性规划(nonlinear programming)
  17. 多张照片合成视频和给视频添加背景音乐
  18. 零打碎敲学Android 五 —AVG,只有神知道的世界
  19. 你的脸正在被偷走,你却对此无能为力
  20. Analog Devices AD1983 @ 英特尔 82801H(ICH8) 高保真音频

热门文章

  1. 如何更好地理解和应用ITIL
  2. python学习day05
  3. MyISAM与InnoDB的区别是什么?
  4. 使用 logback + slf4j 进行日志记录
  5. phonegap走起
  6. 顺序查找、折半查找及索引顺序查找
  7. IE下table的innerHTML无效的处理方法
  8. Zabbix 通过 API 监控 k8s | 技巧
  9. 质数(素数) 与 加密(密码学上的应用)
  10. 会议上,如何分配任务