本文以最新版activemq5.8为例,参考http://activemq.apache.org/ajax.html官网ajax使用例子,作了网页版的聊天室例子。
ActiveMQ支持Ajax,这意味着你可以利用ActiveMQ的“发布/订阅”的特性,来创建高度实时的web应用。
Ajax允许浏览器网页客户端通过互联网收发信息。ActiveMQ对Ajax的支持建立在与REST的ActiveMQ连接器相同的基础上,该连接器允许任意可联网的设备通过JMS收发消息。
具体开发过程如下:
1)首先在web应用的web.xml文件配置AMQ的ajaxServlet,以此来支持ajax的JMS:
- <!-- 配置支持ajax的jms -->
- <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>
- </servlet>
- <servlet-mapping>
- <servlet-name>AjaxServlet</servlet-name>
- <url-pattern>/amq/*</url-pattern>
- </servlet-mapping>
2)在使用ajax发送接收消息的页面中,导入支持也消息中间件通讯的js文件,activemq支持Jquery,Prototype,Dojo三种适配器,我这里使用的是Jquery作为适配器。
- <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>
- <script type="text/javascript">
- var amq = org.activemq.Amq;
- amq.init({
- uri: 'amq', //AjaxServlet所配置对应的URL
- logging: true,//激活日志记录
- timeout: 20,//保持连接时长,单位为秒
- clientId:(new Date()).getTime().toString() //防止多个浏览器窗口标签共享同一个JSESSIONID
- });
- </script>
3)发送消息
要从javascript客户端发送一条JMS消息,需要做的仅仅是调用这个方法:
amq.sendMessage(myDestination,myMessage);
这里的myDestination是目的地URL字符串地址(例如:"topic://MY.NAME" 或者 "channel://MY.NAME"),myMessage是任意格式化好的XML或者被编码为XML内容的纯文本。
4)接收消息
要接收消息,客户端必须定义一个消息处理函数,并且将其注册到amq对象中。例如:
var myHandler = { rcvMessage: function(message) { alert("received "+message); } }; amq.addListener(myId,myDestination,myHandler.rcvMessage);
这里的myId是一个字符串标识符,在之后调用amq.removeHandler(myId)函数的时候会用到。myDestination是目的地URL字符串地址(例如:"topic://MY.NAME" 或者 "channel://MY.NAME")。接收到消息的时候,回调函数myHandler.rcvMessage会把消息传递到你的处理代码块。
具体整个聊天室页面代码如下:
- <%@ page language="java" contentType="text/html; charset=UTF-8"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <!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">
- <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>
- <script>
- $(function(){
- var amq = org.activemq.Amq;
- var myDestination='topic://chat1';
- 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("");
- });
- //接收消息
- var myHandler =
- {
- rcvMessage: function(message)
- {
- //alert("received "+message);
- $("#distext").append(message.getAttribute('name')+":"+message.getAttribute('msg')+"\n");
- }
- };
- amq.addListener('handler',myDestination,myHandler.rcvMessage);
- });
- </script>
- </head>
- <body>
- <h1>发送 ajax JMS 消息</h1>
- <body>
- 消息窗口<br>
- <textarea rows="10" cols="50" id="distext" readonly="readonly"></textarea>
- <br>
- <br/>
- 昵称:<input type="text" id="name"><br/>
- 消息:<input type="text" id="msg">
- <input type="button" value="发送消息" id="sendBtn"/>
- </body>
- </html>
实现页面效果具体如下:
相关推荐
activemq 通过ajax发送接收消息简单例子
本代码关于activemq-cpp的核心代码参考的chenxun2009的博客园,其他部分包括:从配置文件中读取消息通道,过滤条件等信息。
SpringBoot+ActiveMq+MQTT实现消息的发送和接收 后台消费者、生产者、消息发送接口、发送消息业务类等相关配置
NULL 博文链接:https://jackyin5918.iteye.com/blog/2007422
activeMQ的发送消息后接收者返回信息
activemq web通信简单demo,解决了中文乱码问题
activeMQ的测试工具,用于发送和接收activeMQ消息,jar包形式的,安装完jdk之后用java -jar xxx.jar命令运行
springboot整合ActiveMQ源码,适合范围消息队列入门小伙伴,对ActiveMQ消息队列不太了解,不知道如何发送消息,接收消息可以围观。
springboot集成activemq实现消息接收demo
NULL 博文链接:https://sswh.iteye.com/blog/1974169
实现了ActiveMQ的初步封装,比较适合新手入门学习,简单明了
ActiveMQ使用Ajax实现多人聊天室。
activemq与spring整合发送jms消息入门实例 jar 包和实例代码都在压缩包里了
用C#实现的ActiveMQ发布/订阅消息传送源程序
这是我精力整理的ActiveMQ发送和接收protobuf协议消息的实例。 也对ActiveMQ进行了简化封装,也配置了自动重连机制,亲测可用!
结合博客提供spring+activeMQ的demo源码
SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能,里面含有详细业务逻辑代码,配置文件等
Android基于MQTT协议利用ActiveMQ发送消息给Android端接收,属于长连接那种,类似Socket通信
ActiveMQ接受和发送工具.rar,亲测测试可以使用,非常的好用,欢迎下载