ActiveMQ利用ajax收发消息
准备工作:
后台需要导包:
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收发消息的更多相关文章
- 基于ActiveMQ的点对点收发消息
ActiveMQ是apache的一个开源消息引擎.可以作为即通引擎或者消息中间件引擎. 准备 下载ActiveMQ http://activemq.apache.org/download.html 进 ...
- 利用Ajax+MSMQ(消息队列)+WebService实现服务器端向客户端的信息推送
需求: 每当数据库有数据更新时,推送到客户端 软需求: 1.服务器资源有限,要求资源占用尽可能小: 2.项目可控,不许调用第三方不可信不稳定的方法. 已有事例: 1.58到家采用的方法是TCP的长连接 ...
- ActiveMQ学习笔记(5)——使用Spring JMS收发消息
摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...
- ActiveMQ消息队列从入门到实践(4)—使用Spring JMS收发消息
Java消息服务(Java Message Service ,JMS)是一个Java标准,定义了使用消息代理的通用API .在JMS出现之前,每个消息代理都有私有的API,这就使得不同代理之间的消息代 ...
- 利用rabbit_mq队列消息实现对一组主机进行命令下发
目的: 利用rabbit_mq队列消息实现对一组主机进行命令下发 server: #!/usr/bin/env python3.5 # -*- coding:utf8 -*- import os,sy ...
- 利用ajax短轮询+php与服务器交互制作简易即时聊天网站
主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server-sent Events). 本文主要介绍ajax短轮询的简易实现方式. 看懂此文 ...
- 刚体验完RabbitMQ?一文带你SpringBoot+RabbitMQ方式收发消息
人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 这篇是消息队列RabbitMQ的第二弹. 上一篇的结尾我也预告了本篇的内容:利用RabbitTemplate和注解进行收发消息,还有一个我 ...
- nodejs利用ajax实现网页无刷新上传图片
nodejs利用ajax实现网页无刷新上传图片 标签(空格分隔): nodejs 通常情况下上传图片是要通过提交form表单来实现的,但是这又不可避免的产生了网页转. 利用ajax技术和FormDat ...
- ActiveMQ笔记(6):消息延时投递
在开发业务系统时,某些业务场景需要消息定时发送或延时发送(类似:飞信的短信定时发送需求),这时候就需要用到activemq的消息延时投递,详细的文档可参考官网说明,本文只介绍二种常用的用法: 注:本文 ...
随机推荐
- 胜利点20191010-5 alpha week 1/2 Scrum立会报告+燃尽图 03
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8747 一.小组情况组长:贺敬文组员:彭思雨 王志文 位军营 杨萍队名:胜 ...
- c++匿名函数精简写法
main.cpp: #include<stdio.h> #include<functional> #include<unistd.h> std::function& ...
- __doPostBack function
__doPostBack function Hi everyone. Today I am going to talk about the __doPostBack function, because ...
- jQuery file upload --Multiple File Input Fields in One Form
The plugin can be applied to a form with multiple file input fields out of the box. The files are se ...
- cmd 查看域名对应的 IP
1.cmd nslookup 2.输入 域名,例如:www.baidu.com
- wordpress 更新时需要FTP 服务器账户密码的解决方法
首先进入 apache下的wordpress 的目录下 (这是apache服务器默认安装的路径) cd /var/www 接着,给html整个文件夹进行赋值权限,如果不赋予权限 更新的时候会报权限不足 ...
- json -- fastjson如何序列化@Transient的字段
今天把fastjson包改成了1.2.58,发现@Transient标注的字段序列化后不见了,但是项目需要把@Transient字段序列化,处理方法: 原文:https://github.com/al ...
- Nodejs 之非阻塞 I/O、异步、事件驱动
1.非阻塞 I/O var fs = require('fs'); console.log('); fs.readFile('mime.json',function (err,data) {//rea ...
- golang入门案例之http client请求
发请求,接收接送,并解析 package main import ( "fmt" "net/http" "io/ioutil" " ...
- Wireshark 学习笔记 Lebal:Research
学习Wireshark主要是为了契合我最近做的线性激光雷达项目,主要用于抓取数据包 首先是三本书比较值得一看,第一本是清华大学出版社的,侧重教学,第二三两本是人民邮电出版社的,其中第二本是许多课程的指 ...