zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    异常处理的设计和重构学习一
    设计模式之禅之六大设计原则-里氏替换原则
    设计模式之禅之六大设计原则-单一职责原则
    swagger-ui生成api文档并进行测试
    功能强大的swagger-editor的介绍与使用
    swagger-codegen自动生成代码工具的介绍与使用
    Swagger使用教程大全,从入门到精通
    Linux下MySQL的数据文件存放位置
    JUC组件扩展(三):BlockingQueue(阻塞队列)详解
    http_load的安装及使用方法
  • 原文地址:https://www.cnblogs.com/c-x-a/p/5458961.html
Copyright © 2011-2022 走看看