rabbitmq 对多服务器p2p模式配置的一个测试

原创 2016年05月31日 00:48:38

一直对rabbitmq p2p 模式的多服务器下做相同配置的 各个服务器数据接受情况比较好奇


今天有空测试了下 

xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/rabbit
     http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
     
	<!--配置connection-factory,指定连接rabbit server参数 -->
	<rabbit:connection-factory id="connectionFactory"
		 port="5672"  username="guest" password="guest" host="127.0.0.1"
		/>
	
    
		<!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->
	<rabbit:admin connection-factory="connectionFactory" />
	
	<!--定义queue -->
	<rabbit:queue name="queueTest" durable="true" auto-delete="false" exclusive="false" />
	
		<!-- 定义direct exchange,绑定queueTest -->
	<rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false">
		<rabbit:bindings>
			<rabbit:binding queue="queueTest" key="queueTestKey"></rabbit:binding>
		</rabbit:bindings>
	</rabbit:direct-exchange>
	
	<bean id="jsonMessageConverter"  
        class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"></bean>
	
	<!--定义rabbit template用于数据的接收和发送 -->
	<rabbit:template id="amqpTemplate"  connection-factory="connectionFactory" 
	    exchange="exchangeTest"   message-converter="jsonMessageConverter" />
		
	  
	<!-- 消息接收者 -->
	<bean id="messageReceiver" class="com.bimatrix.revit.mq.MessageConsumer"></bean>
	
	<!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
    <rabbit:listener-container connection-factory="connectionFactory">
             <rabbit:listener queues="queueTest" ref="messageReceiver"/>
    </rabbit:listener-container>
	
</beans>
</pre><pre code_snippet_id="1702272" snippet_file_name="blog_20160531_4_8975174" name="code" class="html">
</pre><p></p><p>消费者:</p><p></p><pre code_snippet_id="1702272" snippet_file_name="blog_20160531_5_4133388" name="code" class="java">@Component
public class MessageConsumer implements MessageListener {
	
	private Logger logger = LoggerFactory.getLogger(MessageConsumer.class);
	int receiveNum =0 ;


	@Override
	public void onMessage(Message message) {
		receiveNum++ ;
		//logger.info("receive message:{}",message);
//		System.out.println("receive message:{}"+message);
		System.out.println("receive: "+receiveNum);
	}


}

测试代码:

@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:config/applicationContext.xml" })
public class TestQueue {
	@Autowired
	AmqpTemplate amqpTemplate;


	final String queue_key = "queueTestKey";


	@Test
	public void send() {
		try {
			//System.out.println("-----------------------------------------");
			for(int i=1;i<=1000;i++){
				amqpTemplate.convertAndSend(queue_key, i);
				//System.out.println(i);
			}
			//System.out.println("-----------------------------------------");
		} catch (Exception e) {
//			LOGGER.error(e);
		}
	}


连续发送1000条数据给消费者,同一台机器8080 9080端口各启动一个tomcat 代码完全一样,

接受情况

A 机器 receive: 481

receive: 57  不知道为什么分两次打出来 ,在两个输出界面一个tomcat console 一个是junit的测试输出console 

B 机器 receive: 462 


三者合计就是1000  再次测试总和也是对的


说明两台服务器在p2p的配置下 各接受了一部分生产者发送来的数据

再多服务器下配置p2p 相当于阻塞队列 多个线程同时处理,各吃掉一部分队列的数据,起到了分流的效果

当然每个消费者那里还可以在起动线程池来处理各自接收的数据。 

高并发情况下 这种配置也是可以减轻各个服务器压力


版权声明:本文为博主原创文章,未经博主允许不得转载。

高可用rabbitmq集群服务部署步骤

消息队列是非常基础的关键服务,为保证公司队列服务的高可用及负载均衡,现通过如下方式实现: RabbitMQ Cluster + Queue HA + Haproxy + Keepalived3台rab...
  • xuyaqun
  • xuyaqun
  • 2016年03月22日 18:13
  • 5814

RabbitMQ服务之运行管理篇

RabbitMQ服务之运行管理篇 在实际使用中,我们必须要对RabbitMQ服务器进行管理,也要对其上创建的用户进行基本的权限配置和管理,以及也经常会对Rabbit服务的使用进行统计分析,接下来我们...

Spring AMQP实例 以及Spring 配置文件动态注入属性使用实战

1. 项目结构 关键是jar包,jar包如何引用不当,会出现许多问题。jar包如下: spring-amqp-1.0.0.M1.jar spring-erlang-1.0.0.M1.jar...

RabbitMQ学习之spring配置文件rabbit标签的使用

下面我们通过一个实例

局域网内配置服务器方法--p2p技术、端口映射、网络域名

最近公司要求在内网搭建服务器提供给外网使用,最主要就是在出差时能过方便的提供数据查看服务。局域网里面的PC机的IP地址只是用来内部地址区分的(内网IP),一般都为192.168.1.XX,当要和外网建...

互联网应用的两种工作模式:客户/服务器模式与P2P模式

《智慧的物联网——感知中国和世界的技术》第3章互联网:物联网的运行环境,本章在系统介绍计算机网络与互联网基本概念的基础上,深入讨论了“三网融合”,以及物联网与互联网的区别与联系。本节为大家介绍互联网应...

NAT连通性测试工具以及Flash P2P中的NAT穿透原理

由于公网IP有限,NAT几乎是无处不在。比如我们在家里,牵一个ADSL,用Modem拨号得到一个公网IP,然后在Modem后面再接一个路由使得多个设备能同时上网。路由会有一个公网IP一个私网IP,然后...

互联网金融P2P主业务场景自动化测试

互联网金融P2P行业,近三年来发展迅速,如火如荼。         据不完全统计,全国有3000+的企业。         P2P主要的业务场景概括地说有6个,请看下图:         我的想...

每日区块链:日本三家银行巨头联合开展区块链P2P转账“现场测试”;IBM、超级账本加入区块链身份联盟

1、日本三家银行巨头联合开展区块链P2P转账“现场测试” 导读:日本IT巨头富士通公司昨日发布公告称该公司正与日本三大“银行巨头”合作对个人客户之间的点对点个人转账服务进行联...
  • Ag0JAB
  • Ag0JAB
  • 2017年10月12日 00:00
  • 133

自家电脑搭建服务器发布网站访问内网及解决80端口被屏蔽、动态IP、无公网IP、P2P穿透软件方法

自家搭建服务器,应用部署t
  • paajp
  • paajp
  • 2014年07月11日 22:47
  • 1572
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:rabbitmq 对多服务器p2p模式配置的一个测试
举报原因:
原因补充:

(最多只允许输入30个字)