准备工作:

后台需要导包:

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. Linux环境下TomCat使用指定JDK的版本

    服务器是web服务器,在上面安装了jdk1.7和jdk1.8.及多个tomcat应用,默认/etc/profile 配置的jdk1.7,大部分tomcat应用使用的也是jdk1.7, 但目前有一个新项 ...

  2. leetcode-easy-array-136. Single Number

    mycode   75.80% class Solution(object): def singleNumber(self, nums): """ :type nums: ...

  3. css中相对定位和绝对定位

    相对定位: #box_relative { position: relative; left: 30px; top: 20px; } 绝对定位: #box_relative { position: a ...

  4. Session对象的生命周期(面试题/笔试题)

    创建:第一次执行request.getSession()时创建 销毁: 1)服务器(非正常)关闭时 2)session过期/失效(默认30分钟) 问题:时间的起算点 从何时开始计算30分钟? 从不操作 ...

  5. Flutter路由(一)

    第一点:push使用 1.pushNamed——Navigator.of(context).pushNamed('routeName') Navigator.of(context).pushNamed ...

  6. java:Oracle(事务,分页,jdbc)Mysql(jdbc)

    1.事务:transaction -- 事务开启的唯一条件就是:对数据库进行增,删,改的时候 -- 换句话说,对数据进行增删改以后,必须要执行提交或者回滚 -- 事务就是把数据库中的数据从一致状态转换 ...

  7. 前端深入之css篇丨2020年前,彻底掌握css动画

    马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所以就导致了 ...

  8. IK分词器的安装与使用IK分词器创建索引

    之前我们创建索引,查询数据,都是使用的默认的分词器,分词效果不太理想,会把text的字段分成一个一个汉字,然后搜索的时候也会把搜索的句子进行分词,所以这里就需要更加智能的分词器IK分词器了. 1. i ...

  9. LeetCode.914-一副牌中的X(X of a Kind in a Deck of Cards)

    这是悦乐书的第352次更新,第377篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第214题(顺位题号是914).在一副牌中,每张牌上都写有一个整数. 当且仅当您可以选择 ...

  10. EINT DINT ERTM DRTM EALLOW EDIS ESTOP0的理解

    本文参考以下资料整理 https://wenku.baidu.com/view/6b0d6906cf84b9d528ea7a66.html http://pangqicheng123.blog.163 ...