• ActiveMQ 入门Nodejs版


    ActiveMQ 入门下载与安装

    官方下载地址

    解压,运行bin/win[32|64]/activemq[.bat] 启动服务

     

    环境信息

    控制台: http://localhost:8161 默认端口:8161


    服务地址:

    host: localhost 
    port: 61613

    代码例子

    基本信息:

    语言:Node.js 
    客户端:stompjs
     

    消息发布者:

     
    复制代码

    Queue消息消费者

    1. // Consumer_queue.js
    2. var Stomp = require('stompjs');
    3. // Use raw TCP sockets
    4. var client = Stomp.overTCP('localhost', 61613);  
    5. // uncomment to print out the STOMP frames
    6. // client.debug = console.log;
    7. var connectCallback = function(frame) {  
    8.     var subscription = client.subscribe('/queue/FirstQueue', onMessage);
    9.     //subscription.unsubscribe();
    10. };
    11. var onMessage = function(message){  
    12.     if (message.body) {
    13.       console.log("got message with body " + message.body)
    14.     } else {
    15.       console.log("got empty message");
    16.     }
    17. };
    18. var errorCallback = function(error){  
    19.     console.log(error.headers.message);
    20. };
    21. client.connect('admin', 'admin', connectCallback,connectCallback);  
    复制代码

    Topic消息消费者

    1. // Consumer_topics.js
    2. var Stomp = require('stompjs');
    3. // Use raw TCP sockets
    4. var client = Stomp.overTCP('localhost', 61613);  
    5. // uncomment to print out the STOMP frames
    6. // client.debug = console.log;
    7. var connectCallback = function(frame) {  
    8.     var subscription = client.subscribe('/topic/FirstQueue', onMessage);
    9.     //subscription.unsubscribe();
    10. };
    11. var onMessage = function(message){  
    12.     if (message.body) {
    13.       console.log("got message with body " + message.body)
    14.     } else {
    15.       console.log("got empty message");
    16.     }
    17. };
    18. var errorCallback = function(error){  
    19.     console.log(error.headers.message);
    20. };
    21. client.connect('admin', 'admin', connectCallback,connectCallback);  
    复制代码

    效果图

     

    注: Queue、Topic消息消费者分别启动两个,再启动消息发布者,观察Queue、Topic消息消费者接收到的消息有什么区别

    Queue与Topic的比较

    1、JMS Queue执行load balancer语义: 
    一条消息仅能被一个consumer收到。如果在message发送的时候没有可用的consumer,那么它将被保存一直到能处理该message的consumer可用。如果一个consumer收到一条message后却不响应它,那么这条消息将被转到另一个consumer那儿。一个Queue可以有很多consumer,并且在多个可用的consumer中负载均衡。

     

    2、Topic实现publish和subscribe语义: 
    一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个subscriber将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝。

     

    3、分别对应两种消息模式: 
    Point-to-Point (点对点),Publisher/Subscriber Model (发布/订阅者) 
    其中在Publicher/Subscriber 模式下又有Nondurable subscription(非持久订阅)和durable subscription (持久化订阅)2种消息处理方式。

     fr0m:http://udn.yyuap.com/thread-37813-1-1.html

  • 相关阅读:
    前端(移动端)开发沉思录
    我的世界观—学习与世界观
    学习一门新的语言和平台相当于学习一个新的世界观
    股票:格局、模式、结构与策略
    资本市场世界观
    投资的道与术:投资投的是自己的修为
    关心把事情做得正确,而不是关心赚钱--《股票作手回忆录》第十一章--投资股票的道与术
    js字符串截取函数slice()、substring()、substr()
    推荐一个好的Redis GUI 客户端工具
    sometimes-ever js中创建数组,并往数组里添加元素
  • 原文地址:https://www.cnblogs.com/c-x-a/p/5458961.html
Copyright © 2020-2023  润新知