准备工作:

后台需要导包:

activemq-all.jar

activemq-web.jar

jetty-all.jar

如果是maven项目:

pom.xml

<dependency>  
    <groupId>org.apache.activemq</groupId>  
    <artifactId>activemq-all</artifactId>  
    <version>5.8.0</version>  
</dependency>  
<dependency>  
    <groupId>org.apache.activemq</groupId>  
<artifactId>activemq-web</artifactId>  
    <version>5.8.0</version>  
</dependency>  

修改配置:

web.xml配置,主要是配置接收客户端请求的servlet

<context-param>

<param-name>org.apache.activemq.brokerURL</param-name>

<param-value>tcp://localhost:61616</param-value>

<description>连接到消息中间件的URL</description>

</context-param>

<servlet>

<servlet-name>AjaxServlet</servlet-name>

<servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class>

<load-on-startup>1</load-on-startup>

<async-supported>true</async-supported>

</servlet>

<servlet-mapping>

<servlet-name>AjaxServlet</servlet-name>

<url-pattern>/amq/*</url-pattern>

</servlet-mapping>

说明:

<url-pattern>/amq/*</url-pattern>,配置会在amq.js发送消息时请求的servlet的rul,在amq.js初始化时要做响应的配置.

<load-on-startup>1</load-on-startup>表示这个servlet在tomcat启动时就实例化

<async-supported>true</async-supported>

servlet3.0新增异步处理支持<async-supported>true</async-supported>有时候会报

java.lang.IllegalStateException: A filter or servlet of the current chain does not support asynchronous operations. 错误,

解决方法: 再所有的servlet和filter中都声明asyncSupported=true。

js的引用:

1.需要引入3个js  需要在网站下

<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>  
<script type="text/javascript" src="js/amq_jquery_adapter.js"></script>  
<script type="text/javascript" src="js/amq.js"></script>

2.amq.js需要初始化

<script type="text/javascript">  
   $(document).ready(  
    function()  
    {  
      org.activemq.Amq.init(  
       {   
         uri: 'amq',   
         logging: true,   
         timeout: 1,   
         clientId:(new Date()).getTime().toString()   
       }  
      );  
    });  
   </script>  
$(function(){

//mq初始化

var amq = org.activemq.Amq;

var myDestination='topic://test.topic';//test.topic为topic的名称

amq.init({

uri: 'amq', //AjaxServlet所配置对应的URL

logging: true,//激活日志记录

timeout: 20,//保持连接时长,单位为秒

clientId:(new Date()).getTime().toString() //防止多个浏览器窗口标签共享同一个JSESSIONID

});

//发送消息

$("#sendBtn").click(function(){

var msg=$("#msg").val();

var name=$("#name").val();

amq.sendMessage(myDestination, "<message name='"+name+"' msg='"+msg+"'/>");

$("#msg").val("");

});

//接收消息

rcvMessage: function(message){

$("#mqNum").text(message.data);

// $("#distext").append(message.getAttribute('name')+":"+message.getAttribute('msg')+"\n");

console.log(list);

}

};

//注册消息处理器

amq.addListener('handler',myDestination,myHandler.rcvMessage);

});

ActiveMQ利用ajax收发消息的更多相关文章

  1. 基于ActiveMQ的点对点收发消息

    ActiveMQ是apache的一个开源消息引擎.可以作为即通引擎或者消息中间件引擎. 准备 下载ActiveMQ http://activemq.apache.org/download.html 进 ...

  2. 利用Ajax+MSMQ(消息队列)+WebService实现服务器端向客户端的信息推送

    需求: 每当数据库有数据更新时,推送到客户端 软需求: 1.服务器资源有限,要求资源占用尽可能小: 2.项目可控,不许调用第三方不可信不稳定的方法. 已有事例: 1.58到家采用的方法是TCP的长连接 ...

  3. ActiveMQ学习笔记(5)——使用Spring JMS收发消息

      摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...

  4. ActiveMQ消息队列从入门到实践(4)—使用Spring JMS收发消息

    Java消息服务(Java Message Service ,JMS)是一个Java标准,定义了使用消息代理的通用API .在JMS出现之前,每个消息代理都有私有的API,这就使得不同代理之间的消息代 ...

  5. 利用rabbit_mq队列消息实现对一组主机进行命令下发

    目的: 利用rabbit_mq队列消息实现对一组主机进行命令下发 server: #!/usr/bin/env python3.5 # -*- coding:utf8 -*- import os,sy ...

  6. 利用ajax短轮询+php与服务器交互制作简易即时聊天网站

    主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server-sent Events). 本文主要介绍ajax短轮询的简易实现方式. 看懂此文 ...

  7. 刚体验完RabbitMQ?一文带你SpringBoot+RabbitMQ方式收发消息

    人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 这篇是消息队列RabbitMQ的第二弹. 上一篇的结尾我也预告了本篇的内容:利用RabbitTemplate和注解进行收发消息,还有一个我 ...

  8. nodejs利用ajax实现网页无刷新上传图片

    nodejs利用ajax实现网页无刷新上传图片 标签(空格分隔): nodejs 通常情况下上传图片是要通过提交form表单来实现的,但是这又不可避免的产生了网页转. 利用ajax技术和FormDat ...

  9. ActiveMQ笔记(6):消息延时投递

    在开发业务系统时,某些业务场景需要消息定时发送或延时发送(类似:飞信的短信定时发送需求),这时候就需要用到activemq的消息延时投递,详细的文档可参考官网说明,本文只介绍二种常用的用法: 注:本文 ...

随机推荐

  1. javascript学习笔记之DOM

    DOM(文档对象模型),描述了一个层次化的节点树 一.DOM NODE相关公共属性与方法 DOM中所有节点都实现了NODE接口,该接口的公共属性和方法如下: 1.节点基本属性 1)NodeType 节 ...

  2. MySort(选做)的实现

    MySort(选做)的实现 题目内容 注意:研究sort的其他功能,要能改的动代码,需要答辩 模拟实现Linux下Sort -t : -k 2的功能. 要有伪代码,产品代码,测试代码(注意测试用例的设 ...

  3. 循环链表C语言实现

    按照单链表的设计,稍加改动.和单向链表不一样的地方,头节点不指向NULL,而是指向自己head 循环链表的判满 1)判断next是不是头结点,2)判断size /* * CycleLinkList.h ...

  4. C#文件压缩:ICSharpCode.SharpZipLib生成zip、tar、tar.gz

    原文地址:https://blog.csdn.net/nihao198503/article/details/9204115 将代码原封不动的copy过来,只是因为有关tar的文章太少,大多都是zip ...

  5. 【Linux】GDB用法详解(5小时快速教程)

    GDB是一个强大的命令行调试工具.虽然X Window提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB.大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本. UNIX下的软 ...

  6. 清北学堂2019.8.10 & 清北学堂2019.8.11 & 清北学堂2019.8.12

    Day 5 杨思祺(YOUSIKI) 今天的难度逐渐上升,我也没做什么笔记 开始口胡正解 今天的主要内容是最小生成树,树上倍增和树链剖分 最小生成树 Prim 将所有点分为两个集合,已经和点 1 连通 ...

  7. 让Socket穿透Windows防火墙

    原文地址:https://blog.csdn.net/zuishikonghuan/article/details/48030539 创建了ServerSocket以后,并不是没事了,其实上,为了系统 ...

  8. Fragment 的 replace 和 add 方法的区别?

    Fragment 本身并没有 replace 和 add 方法,这里的理解应该为使用 FragmentManager 的 replace 和 add 两种方法切换 Fragment 时有什么不同.我们 ...

  9. java利用dom4j读取xml

    java连接oracle数据库的时候, 需要从特定地方读取xml文件中的sql去get结果集, xml文件放在和java文件: SqlLoaderFromXML的目录下OracleSQL, xml文件 ...

  10. 针对C++容器类的一个简陋的allocator

    参考: https://en.cppreference.com/w/cpp/named_req/Allocator http://www.josuttis.com/libbook/memory/mya ...