ActiveMq消息推送

  • 1.原理
  • 2.实例
    • 2.1创建项目
    • 2.2添加依赖
    • 2.3创建包结构及文件
    • 2.4创建生产者
    • 2.5创建生产者启动入口
    • 2.6创建消息消费者
    • 2.7启动消费者
    • 2.8启动生产者
  • 3.总结

1.原理

利用ActiveMQ提供的WebSTOMP插件,让浏览器能够使用WebSocket和ActiveMQ接收或者发送消息。由服务端向ActiveMQ发送STOMP消息,而浏览器作为客户端基于stomp.js利用WebSocket与之通信,订阅并接收消息。

2.实例

2.1创建项目

首先创建一个gradle项目

2.2添加依赖

compile group: 'org.apache.activemq', name: 'activemq-all', version: '5.15.9'compile group: 'org.springframework', name: 'spring-jms', version: '5.1.8.RELEASE'compile group: 'org.apache.activemq', name: 'activemq-pool', version: '5.15.9'compile group: 'org.springframework', name: 'spring-beans', version: '5.1.8.RELEASE'compile group: 'org.springframework', name: 'spring-context', version: "5.1.8.RELEASE"

2.3创建包结构及文件

2.4创建生产者

package com.study.produce;import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import javax.jms.Destination;
import java.util.Random;/*** @author jiayq*/
@Service("produce")
public class Produce {@Resource(name = "jmsTemplate")private JmsTemplate jmsTemplate;@Resource(name = "testQueue")private Destination testQueue;public void sendMessage(String messageContent) {jmsTemplate.send(testQueue, session -> session.createTextMessage(new Random().nextDouble() + "queue produce"));}
}

2.5创建生产者启动入口

package com.study.client;import com.study.produce.Produce;
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.springframework.context.ApplicationContext;import java.util.Random;/*** @author jiayq*/
public class Client {public static void main(String[] args) throws InterruptedException {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");Produce produce = applicationContext.getBean("produce",Produce.class);while (true) {produce.sendMessage(new Random().nextDouble() + "");Thread.sleep(3 * 1000);}}}

2.6创建消息消费者

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>ActiveMqPush:This is the consume.</title><!--<link rel="stylesheet" type="text/css" href="default.css">--><!--<link rel="stylesheet" type="text/css" href="jquery.notify.jcss">--><script type="text/javascript" src="stomp.js"></script><script type="text/javascript" src="jquery.min.js"></script>
</head>
<script type="text/javascript">$(document).ready(function () {//创建客户端var client = Stomp.client("ws://localhost:61614/");//定义连接成功回调函数var onConnect = function () {//订阅商品折扣主题的消息client.subscribe("/queue/spring_queue", function (message) {//弹出业务消息提醒$("#body").append("\t" + message.body + "<br/>");});};//定义错误时回调函数var onError = function (msg) {$("#body").html(msg);};//连接服务器client.connect("guest", "guest", onConnect, onError);client.heartbeat.incoming = 5000;client.heartbeat.outgoing = 5000;});
</script>
<body>
<div id="body"></div>
</body>
</html>

2.7启动消费者


2.8启动生产者



3.总结

客户端连接时的URL地址取决于ActiveMQ服务器的配置,因为实例中浏览器与ActiveMQ之间采用WebSocket通信的,而在ActiveMQ中WebSocket的传输连接器默认配置端口是61614,所以连接的URL是ws://localhost:61614/.
ActiveMQ中默认的传输连接器配置如下:

 <!--The transport connectors expose ActiveMQ over a given protocol toclients and other brokers. For more information, see:http://activemq.apache.org/configuring-transports.html--><transportConnectors><!-- Create a TCP transport that is advertised on via an IP multicastgroup named default. --><transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/><!-- Create a SSL transport. Make sure to configure the SSL optionsvia the system properties or the sslContext element. --><transportConnector name="ssl" uri="ssl://localhost:61617"/><!-- Create a STOMP transport for STOMP clients. --><transportConnector name="stomp" uri="stomp://localhost:61613"/><!-- Create a Websocket transport for the websocket dmeo --><transportConnector name="ws" uri="ws://localhost:61614/" /></transportConnectors>

apache-activemq-5.15.9-bin\apache-activemq-5.15.9\examples\conf
activemq-demo.xml

ActiveMq消息推送相关推荐

  1. mqtt消息推送 java_MQTT+ActiveMQ实现消息推送(服务器端java实现)

    上一篇文章已经介绍了mqtt+activemq实现消息推送移动端的实现,也介绍了利用自带的web console进行消息发布的方法.但是在具体的项目应用中,当我们将需要将该消息推送模块嵌入到一个后台管 ...

  2. Activemq MQTT 简单消息推送示例

    Activemq MQTT 简单消息推送示例 简介     简单使用 MQTT 连接 Activemq 进行消息推送的示例代码 编写详情 环境准备     使用docker启动Activemq,查看M ...

  3. MQTT+ActiveMQ实现消息推送(移动端)

    这个小程序是我导师给我布置的一个任务,网上教程不是很多,遇到的一些困难都是自己解决的,所以写出来分享一下,有什么问题大家可以留言,尽力帮大家解决. 首先,我们需要先下载activeMQ (官网:htt ...

  4. Asp.net SignalR 实现服务端消息推送到Web端

    参考博客https://www.cnblogs.com/wintersun/p/4148223.html ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的W ...

  5. Android平台上使用MQTT协议实现消息推送功能

    MQTT实现消息推送,效果如下 服务端下载地址:http://activemq.apache.org/download-archives.html jar包地址 百度网盘:https://pan.ba ...

  6. iOS消息推送机制的实现

    iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务 ...

  7. 未读消息(小红点),前端 与 RabbitMQ 实时消息推送实践,贼简单~

    前几天粉丝群里有个小伙伴问过:web 页面的未读消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢. 之前在 <springboot ...

  8. 友盟小米收不到推送消息_Android 手机收不到消息推送的设置指南 - 融云 RongCloud...

    如何解决 Android 手机因推送权限问题收不到消息提醒? 问题描述 部分 Android 手机系统在黑屏待机后自动清理后台运行的软件,这样影响了应用正常接收新的消息,需要开启手机的某些权限.此文档 ...

  9. iOS 消息推送原理及实现总结

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图: 1. Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Prov ...

最新文章

  1. 轻量级web api_10个很棒的JavaScript库,提升Web开发效率
  2. Math.Pow()是如何在.NET Framework中实现的?
  3. [bzoj2301][HAOI2011]Problem b
  4. 只用半小时,只用半小时,只用半小时,给自己一个机会,看完保你web开发一期末不挂科,老师看了都说好
  5. jquery+bootstrap实现tab切换, 每次切换时都请求数据, 点击提交分别向不同的地址提交数据...
  6. [leetcode]509. 斐波那契数
  7. Integer.parseInt() 与 Integer.valueOf() 区别
  8. 前9个免费的Java进程监视工具以及如何选择一种
  9. 彩虹系统怎么弄服务器,用云服务器彩虹挂机
  10. python安卓自动化实现方法_uiautomator +python 实现安卓UI自动化
  11. django进阶07用户模块与权限系统
  12. 一个很简单的问题:遍历int数组并删掉所有偶数
  13. 螃蟹学PHP设计模式之访问者模式
  14. mac os 录屏快捷键_录制视频软件哪个好用?分享专业的录屏神器
  15. 红米5 Plus刷开发版/小米手机刷开发版
  16. mysql lpad 列_mysql的lpad函数
  17. React Native学习速记
  18. 中国人数学能力很差?
  19. JavaScript(js)的多次弹窗
  20. 苹果内购之不能超过99.99美金被拒绝

热门文章

  1. python学费12306_python【练手】12306查票
  2. 如何计算 N叉树的最大深度
  3. netdisk error2
  4. 微信小程序中的iPhone X适配问题
  5. 小程序使用echarts常见问题
  6. 短视频社交应用系统开发-节省人力、物力成本,快速拥用短视频社交主流功能
  7. 数字孪生十问:分析与思考
  8. srilm 阅读文档15
  9. android imageview.setVisibility(View.VISIBLE)设置无效,代码已执行但是图片不显示
  10. 如何解决删除文件时显示已经被另一程序占用打开的问题