Spring Boot 中使用ActiveMQ(二)

ActiveMQ 天涯孤鸟 2097℃ 0评论

上一篇已经介绍了Spring Boot如何整合ActiveMQ,这一篇介绍如何整合ActiveMQ 对ajax的支持。
在主程序类中添加初始化方法:

对应web.xml配置,启用对Ajax的支持

在页面引入以下js:(可以在apache-activemq-5.13.2\webapps-demo\demo\js 下获取)

发送消息:

P.S:sendMessage方法有两个参数,第一个是代表要发送地址,另外一个是要发送的消息。

接收消息:

这里的5loong是一个字符串标识符,在之后调用amq.removeHandler(myId)函数的时候会用到。topic://sample.queue是目的地URL字符串地址(例如:”topic://MY.NAME” 或者 “channel://MY.NAME”)。接收到消息的时候,回调函数myHandler.rcvMessage会把消息传递到你的处理代码块。

在多浏览器窗口中使用AMQ Ajax:
单一浏览器的所有窗口或者tab页在ActiveMQ服务器中共享同一个JSESSIONID。除非服务器可以分辨多窗口的监听器,否则发送给一个窗口的消息可能被传递到另一个窗口。实际上,这意味着amq.js在任意时刻只能在一个浏览器窗口保持活跃。从ActiveMQ 5.4.2开始,这个问题被解决了,解决方法是允许对amq.init的每一次调用指定一个唯一的clientId。这样做之后,同一个浏览器的多个窗口就可以快乐地共存了。它们分别在代理上有单独的消息订阅者集合,并且不互相影响。
● 在amq.init中,clientId的作用是区分共享同样的JSESSIONID的不同的web客户端。在调用amq.init时,同一个浏览器的不同窗口需要一个唯一的clientId。
● 在amq.addListener中,clientId用于将一个消息订阅与回调函数相关联,当订阅收到一条消息的时候会出发这个函数。这些clientId值是每一个web页面内部的,不需要在多窗口或tab页中保持唯一性。
打开多个窗口,进入ActiveMq控制台,可以看到有多个客户端,如下图:


转载请注明:猫头鹰工作室 » Spring Boot 中使用ActiveMQ(二)

喜欢 (1)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址