我需要使用Amazon MQ在Node.js中使用amqp协议使用和发布消息以排队。我已经设置了AWS MQ,定义了代理并创建了队列。
我已经遵循了AWS Javascript SDk,但仍然找不到任何使用和发布消息到队列的方法。
有人可以帮助我如何使用amqp协议连接到AWS MQ以使用消息并将消息发布到队列中。
谢谢
答案 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;
});
要将消息发布到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;
});
谢谢