0

有谁知道如何从用 Node.js 编写的客户端向 WSO2 消息代理发送消息?

4

2 回答 2

3

由于 WSO2 消息代理支持 AMQP 协议,您应该能够使用任何 NodeJS AMQP 0-9-1 客户端库来执行此操作。其中一些例子是,

  1. amqp.node:https ://github.com/squaremo/amqp.node
  2. 节点-amqp:https ://github.com/postwait/node-amqp

以下使用 amqp.node 库编写的示例代码可用作 NodeJS 客户端来发布或接收来自 WSO2 消息代理的消息。您必须使用该格式amqp://{username}:{password}@{hostname}:{port}来建立与 Message Broker 的连接。所有消息将作为字节消息发送,但可以作为文本接收。

“amqp.node”库提供了丰富的API,也可以用于其他队列操作 MB。

// Sample Publisher
var queuename = 'MyQueue';
var openConn = require('amqplib').connect('amqp://admin:admin@localhost:5672'); // amqp://{username}:{password}@{hostname}:{port} is default AMQP connection URL of WSO2 MB
openConn.then(function(conn) {
  var ok = conn.createChannel();
  ok = ok.then(function(channel) {
    channel.assertQueue(queuename);
    channel.sendToQueue(queuename, new Buffer('New Message'));
  });
  return ok;
}).then(null, console.warn); 

消费者客户端代码如下。

// Sample Consumer
var queuename = 'MyQueue';
var openConn = require('amqplib').connect('amqp://admin:admin@localhost:5672'); // amqp://{username}:{password}@{hostname}:{port} is default AMQP connection URL of WSO2 MB
openConn.then(function(conn) {
  var ok = conn.createChannel();
  ok = ok.then(function(channel) {
    channel.assertQueue(queuename);
    channel.consume(queuename, function(msg) {
      console.log(msg.content.toString());
      channel.ack(msg);
    });
  });
  return ok;
}).then(null, console.warn);
于 2013-07-28T11:07:28.613 回答
0

WSO2 消息代理支持高级消息队列协议 (AMQP) v0.91。

我自己没有尝试过,但您应该能够使用 Node.js 客户端连接 WSO2 MB。

请参阅GitHub 上的amqp.node项目。

您可以使用 AMQP 连接 URL 连接 WSO2 MB。请参阅“使用队列发送和接收消息”文档以了解如何指定 AMQP 连接 URL 以连接 WSO2 MB。

我希望这有帮助!

谢谢!

于 2013-07-27T04:48:21.810 回答