准备工作:

后台需要导包:

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. JS框架_(JQuery.js)网页文字评论弹幕

    百度云盘 传送门 密码:3azl jQuery网页右下角文字评论弹幕效果 <!DOCTYPE html> <html> <head> <title>jQ ...

  2. Win10上安装Awvs 12原版程序和完美破解补丁详细步骤

    环境: Win10 Awvs12安装包 链接:https://pan.baidu.com/s/1FIwYHIEKfLf4XAyeXfhVnA 提取码:6sa8 复制这段内容后打开百度网盘手机App,操 ...

  3. 第三周课程总结&实验报告

    课程总结 在这周对Java进行了更深层次的学习,Java的学习也变得越来越困难而有趣,加入了一些新的构造新的方法,还学习了一些简化代码的方式. 面向对象的基本概念 对于面向对象的程序设计有三个主要特征 ...

  4. Learn The Architecture Memory Management 译文

    1.概述 本文档介绍了ARMv8-A架构内存管理的关键——内存地址转换,包括虚拟地址(VA)到物理地址(PA)的转换.页表(或称地址转换表)格式以及TLBs(Translation Lookaside ...

  5. Junit : how to add listener, and how to extends RunListener to override behaviors while failed

    http://junit.sourceforge.net/javadoc/org/junit/runner/notification/RunListener.html org.junit.runner ...

  6. 获取当前线程状态--Thread类

    String msgToPrint = Thread.currentThread().getStackTrace()[3] .getMethodName(); 就是调用时的方法名. 其中使用的Thre ...

  7. Python学习笔记:使用request库遇到的问题

    一.在请求参数中包含中文时,需要进行编码,如果不进行编码会报错 报错信息: 如:请求参数为:{"username":"超级管理员"} 在使用xlrd模块进行操作 ...

  8. python学习笔记:(十一)模块

    模块是指一个包含定义的函数和变量的文件,其后缀名为.py.模块可以被别的程序引用,并使用其中的函数等功能. 1.import语句 如果需要使用模块,只需要在新模块中导入模块.使用import关键字 如 ...

  9. 使用apicloud开发移动端APP,IOS list页面滚动卡顿解决记录

    给内容容器添加样式:-webkit-overflow-scrolling:touch; -webkit-overflow-scrolling:属性控制元素在移动设备上是否使用滚动回弹效果. auto: ...

  10. MySQL 树形结构 根据指定节点 获取其所有父节点序列

    背景说明 需求:MySQL树形结构, 根据指定的节点,获取其所有父节点序列. 问题分析 1.可以使用类似Java这种面向对象的语言,对节点集合进行逻辑处理,获取父节点. 2.直接自定义MySQL函数  ...