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

今天有空测试了下

xml 文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8. http://www.springframework.org/schema/rabbit
  9. http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
  10. <!--配置connection-factory,指定连接rabbit server参数 -->
  11. <rabbit:connection-factory id="connectionFactory"
  12. port="5672"  username="guest" password="guest" host="127.0.0.1"
  13. />
  14. <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->
  15. <rabbit:admin connection-factory="connectionFactory" />
  16. <!--定义queue -->
  17. <rabbit:queue name="queueTest" durable="true" auto-delete="false" exclusive="false" />
  18. <!-- 定义direct exchange,绑定queueTest -->
  19. <rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false">
  20. <rabbit:bindings>
  21. <rabbit:binding queue="queueTest" key="queueTestKey"></rabbit:binding>
  22. </rabbit:bindings>
  23. </rabbit:direct-exchange>
  24. <bean id="jsonMessageConverter"
  25. class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"></bean>
  26. <!--定义rabbit template用于数据的接收和发送 -->
  27. <rabbit:template id="amqpTemplate"  connection-factory="connectionFactory"
  28. exchange="exchangeTest"   message-converter="jsonMessageConverter" />
  29. <!-- 消息接收者 -->
  30. <bean id="messageReceiver" class="com.bimatrix.revit.mq.MessageConsumer"></bean>
  31. <!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
  32. <rabbit:listener-container connection-factory="connectionFactory">
  33. <rabbit:listener queues="queueTest" ref="messageReceiver"/>
  34. </rabbit:listener-container>
  35. </beans>
  1. </pre><pre code_snippet_id="1702272" snippet_file_name="blog_20160531_4_8975174" name="code" class="html">
  1. </pre><p></p><p>消费者:</p><p></p><pre code_snippet_id="1702272" snippet_file_name="blog_20160531_5_4133388" name="code" class="java">@Component
  2. public class MessageConsumer implements MessageListener {
  3. private Logger logger = LoggerFactory.getLogger(MessageConsumer.class);
  4. int receiveNum =0 ;
  5. @Override
  6. public void onMessage(Message message) {
  7. receiveNum++ ;
  8. //logger.info("receive message:{}",message);
  9. //      System.out.println("receive message:{}"+message);
  10. System.out.println("receive: "+receiveNum);
  11. }
  12. }

测试代码:

  1. @RunWith(value = SpringJUnit4ClassRunner.class)
  2. @ContextConfiguration(locations = { "classpath*:config/applicationContext.xml" })
  3. public class TestQueue {
  4. @Autowired
  5. AmqpTemplate amqpTemplate;
  6. final String queue_key = "queueTestKey";
  7. @Test
  8. public void send() {
  9. try {
  10. //System.out.println("-----------------------------------------");
  11. for(int i=1;i<=1000;i++){
  12. amqpTemplate.convertAndSend(queue_key, i);
  13. //System.out.println(i);
  14. }
  15. //System.out.println("-----------------------------------------");
  16. } catch (Exception e) {
  17. //          LOGGER.error(e);
  18. }
  19. }

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

接受情况

A 机器 receive: 481

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

B 机器 receive: 462

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

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

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

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

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

rabbitmq 对多服务器p2p模式配置的一个测试的更多相关文章

  1. 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式

    通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率 ...

  2. rabbitmq官方的六种工作模式

    1.RabbitMq1.1介绍RabbitMQ是一个消息代理:它接受并转发消息.你可以把它当成一个邮局:当你想邮寄信件的时候,你会把信件放在投递箱中,并确信邮递员最终会将信件送到收件人的手里.在这个例 ...

  3. RabbitMQ 3.9.7 镜像模式集群的搭建

    1. 概述 老话说的好:做人脚踏实地,一步一个脚印,便定能战胜一切困难,最终取得成功!!! 言归正传,之前我们聊了 RabbitMQ 单点服务的安装,今天我们来聊聊 RabbitMQ 3.9.7 镜像 ...

  4. RabbitMQ 3.9.7 镜像模式集群与Springboot 2.5.5 整合

    1. 概述 老话说的好:做人要懂得变通,善于思考,有时稍微转个弯,也许问题就解决了. 言归正传,之前我们聊了 RabbitMQ 3.9.7 镜像模式集群的搭建,今天我们来聊聊 RabbitMQ 3.9 ...

  5. Flask+Nginx+uWSGI在Ubuntu服务器上的配置

    Flask+Nginx+uWSGI在Ubuntu服务器上的配置 Step1 安装系统环境 Ubuntu服务器选择是阿里云的ECS服务,ECS提供单独的内存\CPU\带宽\存储规格可以选择,并且提供合适 ...

  6. LVS三种模式配置及优点缺点比较

    目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.lin ...

  7. eclipse中servers(服务器)的配置

    eclipse中servers(服务器)的配置 使用eclipse+tomcat时,很多人喜欢安装tomcat插件,以便一键启动tomcat,但我不喜欢给eclipse安装一些非必须的插件,而ecli ...

  8. wpa_supplicant 移植及 linux 命令行模式配置无线上网

    本文涉及内容为linux 命令行模式配置无线上网 及 wpa_supplicant 移植到开发板的过程,仅供参考. 1.源码下载 wpa_supplicant 源码下载地址 :http://hosta ...

  9. Varnish缓存服务器的搭建配置手册

    Varnish缓存服务器的搭建配置手册 1.Varnish官方环境依赖提示 Installing Varnish Cache is as simple as enabling our package ...

随机推荐

  1. H5上传压缩图片

    看这个,比较全的 https://github.com/mhbseal/html5ImgCompress ,几乎所有痛点都解决了! PC上传图片 基本结构 form[enctype="mul ...

  2. python控制台输出颜色

    python_控制台输出带颜色的文字方法在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也 ...

  3. GlobeMapper生成Google瓦片

    GlobeMapper真牛,生成自己的瓦片叠在GoogleMap的地图上,效果如下:

  4. (转)JSON Web Token - 在Web应用间安全地传递信息

    JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 让我们来假想一下一个场景.在A用户关注了B用户的时候,系统发邮件给B用户, ...

  5. docker——libnetwork插件网络功能

    从1.7.0版本开始,Docker正是把网络和存储这两部分的功能都以插件化形式剥离出来,允许用户通过指令来选择不同的后端实现.剥离出来的独立容器网络项目叫libnetwork,从名字就能看出,它希望将 ...

  6. python pytz 结合时区的日期操作

    有一个安排在2012 年12 月21 日早上9:30 的电话会议,地点在芝加哥.而朋友在印度的班加罗尔,那么他应该在当地时间几点参加这个会议呢? 对几乎所有涉及到时区的问题,你都应该使用pytz 模块 ...

  7. HTTP--TCP连接

    几乎所有的 HTTP 通信都是由 TCP/IP 承载的,TCP/IP 是全球计算机及网络 设备都在使用的一种常用的分组交换网络分层协议集.客户端应用程序可以打开一 条 TCP/IP 连接,连接到可能运 ...

  8. Python3.x获取网页源码

    Python3.x获取网页源码 1,获取网页的头部信息以确定网页的编码方式: import urllib.request res = urllib.request.urlopen('http://ww ...

  9. BZOJ2221: [Jsoi2009]面试的考验

    传送门 一句话题意,给定一个序列,询问区间内差值的绝对值的最小值. 这道题之前见过一次,似乎是在一次UER上,那一道题当时是用了近似算法才能过. 数据保证数列随机. 这道题显然非常适合离线的做法,考虑 ...

  10. 使用Git【转】

    本文转载自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 我们一直用GitHub ...