RabbitMQ 测试

RabbitMQ 基于Erlang 实现, 客户端可以用Python | Java | Ruby | PHP | C# | Javascript | Go等语言来实现。这里做个java语言的测试。

首先安装好RabbitMQ 服务端。

maven依赖

com.rabbitmq

amqp-client

3.0.4

commons-lang

commons-lang

2.6

java测试代码如下:

//定义队列

EndPoint.java

public abstract class EndPoint{

protected Channel channel;

protected Connection connection;

protected String endPointName;

public EndPoint(String endpointName) throws IOException{

this.endPointName = endpointName;

//Create a connection factory

ConnectionFactory factory = new ConnectionFactory();

//hostname of your rabbitmq server

factory.setHost("192.168.163.33");

factory.setPort(5672);

factory.setUsername("test");

factory.setPassword("test");

//creating a channel

channel = connection.createChannel();

//declaring a queue for this channel. If queue does not exist,

//it will be created on the server.

channel.queueDeclare(endpointName, false, false, false, null);

}

/**

* Close channel and connection. Not necessary as it happens implicitly any way.

* @throws IOException

*/

public void close() throws IOException{

this.channel.close();

this.connection.close();

}

}

//生产者

Producer.java

public class Producer extends EndPoint{

public Producer(String endPointName) throws IOException{

super(endPointName);

}

public void sendMessage(Serializable object) throws IOException {

channel.basicPublish("",endPointName, null, SerializationUtils.serialize(object));

}

}

//消费队列

QueueConsumer.java

public class QueueConsumer extends EndPoint implements Runnable, Consumer{

public QueueConsumer(String endPointName) throws IOException{

super(endPointName);

}

public void run() {

try {

//start consuming messages. Auto acknowledge messages.

channel.basicConsume(endPointName, true,this);

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* Called when consumer is registered.

*/

public void handleConsumeOk(String consumerTag) {

System.out.println("Consumer "+consumerTag +" registered");

}

/**

* Called when new message is available.

*/

public void handleDelivery(String consumerTag, Envelope env,

BasicProperties props, byte[] body) throws IOException {

Map map = (HashMap)SerializationUtils.deserialize(body);

System.out.println("Message Number "+ map.get("message number") + " received.");

}

public void handleCancel(String consumerTag) {}

public void handleCancelOk(String consumerTag) {}

public void handleRecoverOk(String consumerTag) {}

public void handleShutdownSignal(String consumerTag, ShutdownSignalException arg1) {}

}

//测试用例

Main.java

public class Main {

public Main() throws Exception{

QueueConsumer consumer = new QueueConsumer("queue");

Thread consumerThread = new Thread(consumer);

consumerThread.start();

Producer producer = new Producer("queue");

for (int i = 0; i < 100000; i++) {

HashMap message = new HashMap();

message.put("message number", i);

producer.sendMessage(message);

System.out.println("Message Number "+ i +" sent.");

}

}

/**

* @param args

* @throws SQLException

* @throws IOException

*/

public static void main(String[] args) throws Exception{

new Main();

}

}

运行报以下错误

Exception in thread "main" com.rabbitmq.client.PossibleAuthenticationFailureException: Possibly caused by authentication failure

at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:355)

at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:516)

at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:533)

at com.tony.test.EndPoint.(EndPoint.java:26)

at com.tony.test.QueueConsumer.(QueueConsumer.java:16)

at com.tony.test.test.(test.java:13)

at com.tony.test.test.main(test.java:33)

Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; reason: java.net.SocketException: Connection reset

at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)

at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)

at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)

at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:216)

at com.rabbitmq.client.impl.AMQChannel.rpc(AMQChannel.java:202)

at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:347)

... 6 more

Caused by: java.net.SocketException: Connection reset

at java.net.SocketInputStream.read(SocketInputStream.java:209)

at java.net.SocketInputStream.read(SocketInputStream.java:141)

at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)

at java.io.BufferedInputStream.read(BufferedInputStream.java:265)

at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288)

at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95)

at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:131)

at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:515)

解决方法这个 或者这个

网上Rabbit性能测试

性能测试

上图可以看到每秒百万级别的消息进出数量,以及2343条的消息在队列中等待。

参考文献:

Rabbit简单测试实例

Rabbit简单测试实例 安装环境: Yum -y install python-pip Pip install pika 生产者 1 2 3 4 5 6 7 8 9 10 11 import pik ...

TODO:Golang UDP连接简单测试慎用Deadline

TODO:Golang UDP连接简单测试慎用Deadline UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interco ...

构建ASP&period;NET MVC4&plus;EF5&plus;EasyUI&plus;Unity2&period;x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间! ...

ORACLE 数据库简单测试

ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库  非同一个用户的情况,用户是否可以 ...

Javascript的简单测试环境

在2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很好的例子,既让我们得到了一个好用的小工具 ...

struts2&plus;hibernate&plus;spring注解版框架搭建以及简单测试(方便脑补)

为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...

struts2&plus;hibernate&plus;spring配置版框架搭建以及简单测试(方便脑补)

为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...

随机推荐

Oracle 新增删除账户

新增用户: create user test identified by 123456;grant dba,connect,resource to test; 删除账户: drop user xxx ...

BZOJ3808 &colon; Neerc2012 Labyrinth of the Minotaur

左上角和右下角不四连通等价于左下角和右上角八连通 枚举正方形的左上角,先二分出最大的边长,使得里面不含障碍物 然后再二分出最小的边长,使得两部分连通,用前缀和判断 这题WA了好久…一直对拍都没问题…于 ...

费用性支出预分摊form方式和web方式区别

预分摊 1 form方式 费用性支出先通过生产资产行请求 生成一个资产行,如果该资产行分摊到两个资产上则分割成两个资产行,既所谓的针对资产行进行分摊. 2 web方式 费用性支出直接分摊到资产上形成资 ...

Hibernate映射类型对照表

Hibernate映射类型对照表 java类型  Hibernate映射类型  SQL类型 java.math.BigDecimal big_decimal numeric byte[] binary ...

iOS UIButton EdgeInsets

说一下系统的button,image 和 title的位置关系 默认image 和 title的位置关系: 随便画了草图,有点丑,不过不妨碍理解: 第一种:在button上只设置文字,这个时候,but ...

八&period;利用springAMQP实现异步消息队列的日志管理

经过前段时间的学习和铺垫,已经对spring amqp有了大概的了解.俗话说学以致用,今天就利用springAMQP来完成一个日志管理模块.大概的需求是这样的:系统中有很多地方需要记录操作日志,比如登 ...

Linq SelectMany 交叉连接

class Student1 { public int Score { get; set; } public Student1(int score) { this.Score = score; } } ...

HDU - 6393 Traffic Network in Numazu(树链剖分&plus;基环树)

http://acm.hdu.edu.cn/showproblem.php?pid=6393 题意 给n个点和n条边的图,有两种操作,一种修改边权,另一种查询u到v的最短路. 分析 n个点和n条边,实 ...

boost--线程

1.thread的使用 boost的thread包含了线程创建.使用.同步等内容,使用thread需要包含头文件"boost\thread.hpp". thread中使用了需要编 ...

html基础整理(01居中 盒子问题)

01 文字居中 将一段文字置于容器的水平中点,只要设置text-align属性即可: text-align:center; 02 容器水平居中   先为该容器设置一个明确宽度,然后将margin的水平 ...

rabbitmq java 测试_RabbitMQ 简单测试相关推荐

  1. Java注解案例-简单测试框架

    目录 一.需求 Calculator类: Check注解: TestCheck类: 二.运行结果 控制台: 记录异常的文件(bug.txt): 三.结论 一.需求 需求:当主方法执行后,会自动执行被检 ...

  2. rabbitmq java实例_RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)

    转载http://blog.csdn.net/u013142781 一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式 ...

  3. 获取rabbitmq连接对象_RabbitMQ——简单队列

    RabbitMQ 简述# RabbitMQ是一个消息代理:它接受并转发消息. 您可以将其视为邮局:当您将要把寄发的邮件投递到邮箱中时,您可以确信Postman 先生最终会将邮件发送给收件人. 在这个比 ...

  4. rabbitmq java代码_RabbitMQ java 原生代码

    rabbitMQ 的交换器有四种类型:direct.fanout.topic.headers 以下是具体的代码: direct:路由键只能全部匹配,才能进入到指定队列中.其他使用 direct生产者 ...

  5. java swing实现简单图片显示(测试生成图片快捷方式)

    原链接:https://yq.aliyun.com/articles/58303 package com.ts.x;import java.awt.Image; import java.awt.ima ...

  6. jmeter测试java接口测试_简单易学的测试攻略:JMeter测试Java请求示例

    JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,大家可以到官网下载源代码和查看相关文档. 关于使用JMeter进行JDBC数据库测试.HTTP请求接 ...

  7. 走进Java接口测试大门之测试框架TestNG

    一.简介 TestNG 是一个受 JUnit 和 NUnit 启发的测试框架,旨在简化广泛的测试需求,从单元测试到接口测试. 但引入了一些新功能,使其更强大,更易于使用,例如: 注释. 在线程池中运行 ...

  8. LUA GC 简单测试

    LUA GC 简单测试 function table.count(t)if type(t) ~= "table" thenassert(false)returnendlocal n ...

  9. php的完整代码块,简单测试了一下php中的代码块、内部类等知识

    简单测试了一下php中的代码块.内部类等知识<?php class a { public $b; public function print_result() { //普通代码块,但已经不是ja ...

最新文章

  1. Mdnice 简洁主题
  2. Linux与云计算——第二阶段 第五章:存储Storage服务器架设—分布式存储GlusterFS基础...
  3. 《软件工程方法与实践》—— 导读
  4. 2021-01-21 linux shell脚本实现间隔一定时间执行一次任务
  5. CodeIgniter学习笔记一
  6. 分析 HTTP,TCP 的长连接和短连接以及 sock
  7. 两家云服务器价格比较
  8. java9 堆外内存_java堆外内存泄漏排查
  9. git flow 使用步骤
  10. Asp.Net Core发布绑定域名和端口
  11. ARCore-Unity3d教程3 - Unity Demo发布
  12. POJ1029 UVA158 Calendar题解
  13. 16. XML DOM
  14. 我的世界检测不到java_《我的世界》检测不到java怎么办?
  15. Spring框架七大核心模块
  16. dw怎么做html鼠标变化,dw鼠标经过单元格变色 DW 鼠标经过表格 背景变色
  17. psc格式文件 的数据库导入问题
  18. 手把手带你撸一个校园APP(一):项目简介
  19. 实对称矩阵的几个性质
  20. 2012版辅助开发工具包(ADT)新功能特性介绍及安装使用

热门文章

  1. webpack——JS模块化说明视频-张晓飞-专题视频课程
  2. 如何查看C++ 编译的DLL函数
  3. matplotlib :lengend图例参数(bbox_to_anchor)的使用
  4. Warning: Class ‘com.xxx.xxx‘ not found in module ‘xxxx‘
  5. python基础知识点集锦一
  6. 大数据-计算引擎:MapReduce、TEZ、Spark【Hive可选用的三大计算引擎】
  7. 适合小白入门的随机森林介绍
  8. 【程序44】 题目:5文钱买一只公鸡,3文钱买一只母鸡,1文钱可以买3只小鸡,现在要用100文钱买100只鸡,那么各有公鸡,母鸡,小鸡多少只?
  9. 苹果Ipad锁屏密码忘记之后,如何不会变成砖
  10. [含文档+源码等]高校科研项目管理系统[包运行成功]