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

posted @ 2016-05-04 16:40  公众号python学习开发  阅读(1134)  评论(0编辑  收藏  举报