如何在Node.js中使用和发布Amazon MQ中的消息?

时间:2018-07-08 09:28:09

标签: node.js amqp amazon-mq

我需要使用Amazon MQ在Node.js中使用amqp协议使用和发布消息以排队。我已经设置了AWS MQ,定义了代理并创建了队列。

我已经遵循了AWS Javascript SDk,但仍然找不到任何使用和发布消息到队列的方法。

有人可以帮助我如何使用amqp协议连接到AWS MQ以使用消息并将消息发布到队列中。

谢谢

1 个答案:

答案 0 :(得分:1)

我已经使用过amqp10 npm模块,该模块用于消耗和发布消息到AWS MQ。

下面是代码:

  const AMQPClient = require('amqp10').Client;
  const Policy = require('amqp10').Policy;

1。要使用来自AWS MQ的消息:

      let client = new AMQPClient(Policy.Utils.RenewOnSettle(1, 1, 
Policy.ServiceBusQueue));
      let connectionString = 'your_connnection_string';
      client.connect(connectionString)
          .then(function() {
              console.log("Connected");
              return Promise.all([

client.createReceiver(configurationHolder.config.getMessageQueueName)
              ]);
          })
          .spread(function(receiver) {
                  receiver.on('errorReceived', function(rx_err) {
                      console.warn('===> RX ERROR: ', rx_err);
                      return err;
                  });
                  receiver.on('message', function(message) {
                      client.disconnect().then(function() {
                      console.log('disconnected, when we get the message from the queue);
                      return message.body;
                  });
              });
          })
          .error(function(e) {
                  console.warn('connection error: ', e);
                  return err;
              });
  1. 要将消息发布到AWS MQ:

    let client = new AMQPClient(Policy.merge({
        senderLinkPolicy: {
            callbackPolicy: Policy.Utils.SenderCallbackPolicies.OnSent
        }
    }, Policy.DefaultPolicy));
    
    
        client.connect(connectionString, {
                'saslMechanism': 'ANONYMOUS'
            })
            .then(function() {
                console.log("Connected");
                return Promise.all([
                    client.createSender(queueName)
                ]);
            })
            .spread(function(sender) {
                sender.on('errorReceived', function(tx_err) {
                    console.warn('===> TX ERROR: ', tx_err);
                    return err;
                });
                var options = {
                    annotations: {
                        'x-opt-partition-key': 'pk' + msgValue
                    }
                };
                return sender.send(JSON.stringify(msgValue), 
    options).then(function(state) {
                    client.disconnect().then(function() {
                        console.log('disconnected, when we saw the value we 
    inserted after publish to AWS MQ.');
                        return state;
                    });
                });
            })
            .error(function(e) {
                console.warn('connection error: ', e);
                return err;
            });
    

谢谢