`
liyixing1
  • 浏览: 939797 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

REST和AJAX

    博客分类:
  • jms
阅读更多
REST
通过activemq提供的servlet
<servlet>
<servlet-name>MessageServlet</servlet-name>
<servlet-class>org.apache.activemq.web.MessageServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
 
<servlet-mapping>
<servlet-name>MessageServlet</servlet-name>
<url-pattern>/message/*</url-pattern>
</servlet-mapping>


通过这样的配置,代理的消息目的地就通过下面的RUI路径暴露出来.比如,STOCKS.JAVA消息主题就被映射到
下面的URI上:http://localhost:8161/demo/message/STOCKS/JAVA?type=topic

Ajax API
首先需要使用ajax servlet

<servlet>
<servlet-name>AjaxServlet</servlet-name>
<servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class>
</servlet>
 
<servlet-mapping>
<servlet-name>AjaxServlet</servlet-name>
<url-pattern>/amq/*</url-pattern>
</servlet-mapping>

 <context-param>
        <param-name>org.apache.activemq.brokerURL</param-name>
        <param-value>tcp://localhost:61616</param-value>
        <description>The URL of the Message Broker to connect to</description>
    </context-param>


在页面引用js文件
<script type="text/javascript" src="amq/amq.js"></script>
<script type="text/javascript">
//指定url地址
amq.uri='/amq';
</script>

发送消息
amq.sendMessage("topic://TEST", "message");
如果你打算订阅某个特定的消息目的地(或多个消息目的地),你需要注册一个回调函数,当接收到一个
新消息时,会调用这个函数
通过 amq对象的addListener() 注册回调函数,该函数除了接受一个 回
调函数作为参数外,同时还接受一个订阅的消息目的和一个ID作为参数,使用该ID参数使得进一步处
理这个监听器成为可能.

var priceHandler =
{
_price: 
function(message)
{
if (message != null) 
{
var price = parseFloat(message.getAttribute('bid'))
var symbol = message.getAttribute('stock')
var movement = message.getAttribute('movement')
if (movement == null) 
{
movement = 'up'
}
 
var row = document.getElementById(symbol)
 
if (row)
{
// perform portfolio calculations
var value = asFloat(find(row, 'amount')) * price
var pl = value - asFloat(find(row, 'cost'))
// now let’s update the HTML DOM
find(row, 'price').innerHTML = fixedDigits(price, 2)
find(row, 'value').innerHTML = fixedDigits(value, 2)
find(row, 'pl').innerHTML = fixedDigits(pl, 2)
find(row, 'price').className = movement
find(row, 'pl').className = pl >= 0 ? 'up' : 'down'
}
}
}
};
 
function portfolioPoll(first)
{
if (first)
{
amq.addListener('stocks', 'topic://STOCKS.*', priceHandler._price);
}
}
 
amq.addPollHandler(portfolioPoll);


对于新版本而言,整个js api已经发生了变化,使用了适配器的概念,如果想让它对jquery环境下运行,需要添加jquery适配器

其中主题是topic://MY.NAME
队列是channel://MY.NAME


<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="js/amq_jquery_adapter.js"></script>
<script type="text/javascript" src="js/amq.js"></script>
<script type="text/javascript">
	var amq = org.activemq.Amq;
	amq.init({
		uri : 'amq.do',
		logging : true,
		timeout : 200
	});
</script>

</head>
<body>
	<div id="show">------------------------------------------------------------------------------------------------------------------</div>
	<script type="text/javascript">
		function send() {
			//"topic://MY.NAME"(主题) or "channel://MY.NAME"(队列) or queue://队列
			amq.sendMessage('topic://liyixing11', $('#value').val());
		}
	</script>

	<div>
		<input type='button' value='send' onclick='send()' /> <input
			type='text' id='value' value='send' />
	</div>
</body>
</html>

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="js/amq_jquery_adapter.js"></script>
<script type="text/javascript" src="js/amq.js"></script>
<script type="text/javascript">
	var amq = org.activemq.Amq;
	amq.init({
		uri : 'amq.do',
		logging : true,
		timeout : 200
	});
</script>

</head>
<body>
	<div id="show">------------------------------------------------------------------------------------------------------------------</div>
	<script type="text/javascript">
		var id = new Date().getTime() + 'x';

		var myHandler = {
			rcvMessage : function(message) {
				var show = $('#show');

				show.html(show.html() + '<br>' + message);
			}
		};

		$(function() {
			var show = $('#show');
			show.html(show.html() + '<br>' + id);
//第一个参数是ID
			//当使用完毕后,可以使用amq.removeHandler(myId)来移除监听
//"topic://MY.NAME"(主题) or "channel://MY.NAME"(队列) or queue://队列
			amq.addListener(id, 'topic://liyixing11', myHandler.rcvMessage);
		});
	</script>
</body>
</html>


api

//过滤器
amq.addListener( myId, myDestination, myHandler.rcvMessage, { selector:"identifier=&#39;TEST&#39;" } );

多窗口浏览器
对于多窗口浏览器而言,他们的session是共享的,而ajax方式是基于session模式的,因此需要为每个标签页指定唯一id

org.activemq.Amq.init({
  uri: &#39;amq&#39;,
  logging: true,
  timeout: 45,
  clientId:(new Date()).getTime().toString() //id
});

由于会启用一个保持连接的方式等待消息到来,对于支持异步servlet的servlet3.0服务器,会具有更好的性能。

activemq使用 Jetty 6 Continuations ,来完成servlet3.0 的异步功能。
分享到:
评论

相关推荐

    Linux 平台基于 Qt5 的网速浮窗.zip

    Linux 平台基于 Qt5 的网速浮窗

    手机游戏峡谷沼泽农田关卡地图Ai+EPS+PSD源文件.zip

    游戏开发资源,游戏UI,游戏GUI,游戏图标,PSD格式,XD格式,PNG下载,源文件,可编辑下载,游戏购物充值界面,宝石,图标,PS格式,AI格式等,游戏APP

    上市公司-企业资本结构动态调整数据及代码(2001-2022年).txt

    数据存放网盘,txt文件内包含下载链接及提取码,永久有效。 样例数据及详细介绍参见文章:https://blog.csdn.net/li514006030/article/details/138324717

    Git 常用命令手册大全

    Git 是一个开源的分布式版本控制系统,它允许你跟踪代码的更改,并且可以与他人合作开发项目。附件中是一些常用的 Git 命令。 这些命令覆盖了 Git 的基本操作,包括初始化、克隆、提交、分支管理、合并、查看状态和历史、远程仓库操作等。根据你的具体需求,可能还需要学习更多的命令和 Git 的高级用法。 文件绿色安全,仅供学习交流使用,欢迎大家下载学习交流!

    中科大2021秋《机器学习概论》课程资源.zip

    机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径。 机器学习的发展历程可以追溯到20世纪50年代,当时Arthur Samuel在IBM开发了第一个自我学习程序,一个西洋棋程序,这标志着机器学习的起步。随后,Frank Rosenblatt发明了第一个人工神经网络模型——感知机。在接下来的几十年里,机器学习领域取得了许多重要的进展,包括最近邻算法、决策树、随机森林、深度学习等算法和技术的发展。 机器学习有着广泛的应用场景,如自然语言处理、物体识别和智能驾驶、市场营销和个性化推荐等。通过分析大量的数据,机器学习可以帮助我们更好地理解和解决各种复杂的问题。例如,在自然语言处理领域,机器学习技术可以实现机器翻译、语音识别、文本分类和情感分析等功能;在物体识别和智能驾驶领域,机器学习可以通过训练模型来识别图像和视频中的物体,并实现智能驾驶等功能;在市场营销领域,机器学习可以帮助企业

    游戏道具3D立体blender模型图标素材-3d Game Asset Icon Vol.1.zip

    游戏开发资源,游戏UI,游戏GUI,游戏图标,PSD格式,XD格式,PNG下载,源文件,可编辑下载,游戏购物充值界面,宝石,图标,PS格式,AI格式等,游戏APP

    K1213-Q版游戏UI界面.zip

    游戏开发资源,游戏UI,游戏GUI,游戏图标,PSD格式,XD格式,PNG下载,源文件,可编辑下载,游戏购物充值界面,宝石,图标,PS格式,AI格式等,游戏APP

    百问网linux桌面GUI,基于LVGL 8.x。.zip

    百问网linux桌面GUI,基于LVGL 8.x。

    HTML5小游戏源码下载网页版游戏JS小游戏-塔防源码.zip

    HTML5小游戏源码下载,JS小游戏源码下载,坦克大战,驴子跳,连连看,俄罗斯方块,圈泡泡,塔防,太空战舰,愤怒的小鸟,植物大战僵尸,水果忍者,扫雷,超级玛丽,打地鼠,坦克大战,麻将等JS小游戏源码下载,游戏开发教程,网页游戏,本地直接打开就可以玩。

    2022年 【30页】外部环境边际改善,AIGC搭建元宇宙内容生态.zip

    2022年 【30页】外部环境边际改善,AIGC搭建元宇宙内容生态.zip

    node-v10.15.3-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.11.1-sunos-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Support 客户关系管理 - SAS 支持.pdf

    Support 客户关系管理 - SAS 支持.pdf

    node-v6.12.1-sunos-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    机械设计PF-1315反击式破碎机sw14可编辑非常好的设计图纸100%好用.zip

    机械设计PF-1315反击式破碎机sw14可编辑非常好的设计图纸100%好用.zip

    ATMEGA328P+CH340C arduino-nano最小系统开发板AD09设计硬件(原理图+PCB)文件.zip

    ATMEGA328P+CH340C arduino_nano最小系统板ALTIUM设计硬件原理图+PCB文件,硬件采用2层板设计,大小为8x10mm, 包括完整的ALTIUM设计硬件原理图和PCB文件,可以做为你的设计参考。

    源代码-160.es免费资源网程序.zip

    源代码-160.es免费资源网程序.zip

    用Python来抓取一个新闻网站上的文章标题、链接、发布时间和内容

    在这个爬虫开发案例中,我们将使用Python的requests库和BeautifulSoup库来抓取一个新闻网站(如https://news.example.com)上的文章标题、链接、发布时间和内容。 代码解释 导入requests和BeautifulSoup库。 定义get_article_list函数,接收一个URL参数,用于获取文章列表。 使用requests.get()方法发送GET请求,获取网页内容。 使用BeautifulSoup解析网页内容,提取文章标题、链接和发布时间。 将提取到的文章信息存储在一个字典列表中,并返回。 定义get_article_content函数,接收一个URL参数,用于获取文章内容。 使用requests.get()方法发送GET请求,获取网页内容。 使用BeautifulSoup解析网页内容,提取文章内容。 返回提取到的文章内容。 在主函数main中调用get_article_list函数,遍历文章列表并输出标题、链接、发布时间和内容。 注意:请将示例中的https://news.example.com替换为您要抓取的实际新闻网站URL。在

    毕业设计:Python高校社团学生会管理系统(源码 + 数据库 + 说明文档)

    毕业设计:Python高校社团学生会管理系统(源码 + 数据库 + 说明文档) 二、 相关技术介绍 4 (一) SSM架构 4 (二) MYSQL简介 4 (三) Java技术简介 5 (四) Eclipse介绍 5 三、 需求分析 6 (一) 功能需求 6 (二) 非功能需求分析 6 (三) 业务过程分析 6 (四) 系统设计原则 6 四、 系统可行性研究 7 1. 技术可行性 7 2. 经济可行性 7 3. 操作可行性 7 五、 系统总体设计 8 六、 数据库设计 8 (一) E-R图 8 (二) 数据库表实现 9 七、系统实现 10 1. 首页 10 2. 注册 11 3. 登录 11 4. 后台首页界面 12 5. 社团公告页面 13 6. 留言信息页面 13 7. 社团活动页面 14 结论 14

    扫雷游戏UI素材源文件minesweeper.zip

    游戏开发资源,游戏UI,游戏GUI,游戏图标,PSD格式,XD格式,PNG下载,源文件,可编辑下载,游戏购物充值界面,宝石,图标,PS格式,AI格式等,游戏APP

Global site tag (gtag.js) - Google Analytics