zoukankan      html  css  js  c++  java
  • 学习笔记-记ActiveMQ学习摘录与心得(二)

      上个周末被我玩过去了,罪过罪过,现在又是一个工作日过去啦,居然有些烦躁,估计这几天看的东西有点杂,晚上坐下来把自己首要工作任务总结总结。上篇学习博客讲了ActiveMQ的特性及安装部署,下面先把我以前启动AMQ遇到的问题写出来。

    data lock问题:

    这个是因为aqm所在文件datakahadb文件夹下的lock文件缘故,可以删掉,再运行就可以了。

    端口被占用问题:打开服务,找到Internet Connection Sharing (ICS),是ICS占用了端口使得ActiveMQ无法启动。

    --------------------------以前的问题讲完,切入正题-----------------------------

    关于Topic模式和Queue模式的发送和接收

    首先是点对点模式:

    生产者和消费者都在线的就不测试了。开启生产消息端,在没有消费端在线时发送一条消息到Activemq,

    消费端上线,接收到消息

    当存在两个相同的消费者时,使用点对点模式发送一条消息会怎么样?下面一个是用winform写的消费者,一个是控制台的消费者,两者设置的客户端ID不同,监听的是同一个Queue名。winform先启动,控制台程序后启动。如下图:

    接下来用生产者发送一条消息。

    看结果

     看来两个相同的消费者监听一个Queue名,先连接上的会接收到,而这个消息只能发送给一方。

    然而,我把那个接受到消息的winform程序关闭,会怎样?

    结果:,把winform程序关闭后,那个刚才没接受到消息的控制台程序可以接受消息了。

    再把winform程序打开,两个消费者又同时在线,会怎样?

    结果:

    结论:当使用Queue模式发送消息时,某一个监听该Queue名的消费者A上线后会与之建立一个MessageQueue,相当于两人直接建立了一个专用通道,一对一单独辅导,之后的消费者B再来监听只能在该消费者之后排队啦,等A走了,B就成了专属客户,这时候A又来了,也是排队等在B后面,等B走了才轮到A。

    ----分割-----

    下面是广播模式发送:

    做两个消费者,都订阅了生产者的消息,而且都不在线,生产者发送一条消息之后,两个消费者上线会怎么样?

    看两个消费者情况:,两个上线都接收到了。

    之后我又做了一个订阅者在线一个不在线,两个都在线等,都是可以接收到消息,相当于邮箱,只要订阅了,发布的消息都能接收到,不管你在不在线,看起来比较自由。

    -----------------再一个分割线--------------

    生产者和消费者可以使用不同的传输协议来传输消息,ActiveMQ提供了广泛的连接模式,包括HTTP/S、JGroups、JXTA、muticast、SSL、TCP、UDP、XMPP等。

            <transportConnectors>
                <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
                <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            </transportConnectors>

    可以看出最大连接数是1000,最大容量是100m,多种协议连接我试了下没弄出来,可能我哪里弄错了,路过的大牛们指点下吧^_^   还有传输的内容问题,可以支持多种格式,有待尝试后总结出来。

    还测试了下发送的消息存储位置问题,是存在内存里吗?我发送了几万条数据内存没有变化。可能原因是消息量过少,看不出来。。。

    下面就开始写ActiveMQ的持久化存储模式和拦截器过滤器的使用问题。

  • 相关阅读:
    Android 的 ramdisk.img、system.img、userdata.img 作用说明,以及UBoot 系统启动过程
    Android启动过程以及各个镜像的关系
    程序员如何利用空余时间挣零花钱?
    hcharts实现堆叠柱形图
    [慕课笔记] node+mongodb建站攻略
    【每周一图】蜂鸟
    [慕课笔记]Node入口文件分析和目录初始化
    [慕课笔记] node+mongodb建站攻略
    hcharts实现堆叠柱形图
    程序员常用的六大技术博客类
  • 原文地址:https://www.cnblogs.com/wuyouyu/p/3396160.html
Copyright © 2011-2022 走看看