Следующий код работает:
ал тот же вопрос несколько дней назад:Невозможно «просмотреть» сообщения из очереди служебной шины Azure с помощью AMQP и узла, Я снова задаю тот же вопрос, но с некоторыми отличиями (поэтому, пожалуйста, не отмечайте этот вопрос как дубликат другого вопроса):
В предыдущем вопросе я использовалnodeamqp10
Библиотека, однако, основываясь на некоторых комментариях на странице Github для этой библиотеки, я в конечном итоге использовалrhea
вместоnodeamqp10
библиотека.С некоторой помощью команды Azure Service Bus я добился определенного прогресса, и теперь я получаю сообщение об ошибке от Azure Service Bus, которое говорит мне, что я на правильном пути.Вот новый код, который я использую:
var client = require('rhea');
const keyName = 'MyCustomPolicy';
const sasKey = 'SAS Key'
const serviceBusHost = 'account.servicebus.windows.net';
const queueName = '003';
client.on('connection_open', (context) => {
context.connection.open_sender({
target: { address: `${queueName}/$management` }
});
});
client.once('sendable', (context) => {
console.log('messages can be sent now....');
var receiver = context.connection.open_receiver({
source: { address: `${queueName}/$management` },
autoaccept: false,
target: { address: 'receiver-link' }
});
receiver.once('receiver_open', (context) => {
console.log('receiver is now open....');
});
receiver.once('message', (context) => {
console.log('message received by receiver....');
console.log(context.message);
});
var messageBody = {
'from-sequence-number': 1,
'message-count': 5
};
const msg = {
application_properties: {
operation: 'com.microsoft:peek-message'
},
body: client.types.wrap_map(messageBody),
reply_to: 'receiver-link'
};
context.sender.send(msg);
console.log('message sent....');
});
client.connect({
transport: 'tls',
host: serviceBusHost,
hostname: serviceBusHost,
username: keyName,
password: sasKey,
port: 5671,
reconnect_limit: 10
});
Теперь, когда я запускаю этот код, я получаю500
ошибка возврата из служебной шины Azure:
{
"application_properties":
{
"statusCode":500,
"errorCondition":"amqp:internal-error",
"statusDescription":"The service was unable to process the request; please retry the operation. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 Reference:ab667ed6-1565-4728-97b7-6ae4a33468b9, TrackingId:538f93a1-2c07-4bc0-bf41-dc00d7ae963c_B13, SystemTracker:account-name:Queue:003, Timestamp:8/2/2018 7:43:52 AM",
"com.microsoft:tracking-id":"538f93a1-2c07-4bc0-bf41-dc00d7ae963c_B13"
}
}
Я даже проверил ссылку, включенную в сообщение об ошибке (http://go.microsoft.com/fwlink/?LinkId=761101) но там нет упоминаний об ошибках, связанных с amqp по этой ссылке.
Как и в предыдущем вопросе, если я использую адрес в качестве только имени очереди вместоqueue-name/$management
Я могу получить сообщения, но они заблокированы, и количество сообщений для них увеличивается. Кроме того, он возвращает все сообщения из очереди вместо 5 сообщений, которые я запрашиваю.
Я не уверен, что я делаю неправильно. Может кто-нибудь помочь?