Статьи

Node.js в веб-сайтах Azure и служебной шине — чтение сообщений из облачных очередей

Этот пост о чтении сообщений Service Bus Queues от Node.js.

  1. Создание очередей

  2. Заполнение очередей

  3. Загрузка веб-матрицы

  4. Настройка узла

  5. Настройка Azure

  6. Написание кода

  7. Чтение очередей служебной шины

  8. Тестирование локально

Последнее сообщение в блоге

  1. http://blogs.msdn.com/b/brunoterkaly/archive/2014/08/07/learn-how-to-create-a-queue-place-and-read-a-message-using-azure-service- автобусные очереди-в-5-minutes.aspx

Код для создания и заполнения очереди

Заполнить очередь SB

        NamespaceManager namespaceManager = NamespaceManager.Create();
        Console.WriteLine("\nCreating Queue '{0}'...", QueueName);
        // Delete if exists
        if (namespaceManager.QueueExists(QueueName))
        {
            namespaceManager.DeleteQueue(QueueName);
        }
        namespaceManager.CreateQueue(QueueName); 

Код для определения типа сообщения

Определить тип сообщения

  private static BrokeredMessage CreateSampleMessage(string messageId, string messageBody)
    {
        BrokeredMessage message = new BrokeredMessage(messageBody);
        message.MessageId = messageId;
        return message;
    } 

Код для записи в очередь

Написать в очередь

queueClient.Send(message); 

Восстановление после ошибок

Восстановление после ошибок

catch (MessagingException e)
    {
    if (!e.IsTransient)
    {
        Console.WriteLine(e.Message);
        throw;
    }
    ....               
    // If we hit error, wait a couple of seconds and loop again
private static void HandleTransientErrors(MessagingException e)
    {
        //If transient error/exception, let's back-off for 2 seconds and retry
        Console.WriteLine(e.Message);
        Console.WriteLine("Will retry sending the message in 2 seconds");
        Thread.Sleep(2000);
    } 

Этот пост о том, как заставить узел читать сообщения очереди служебной шины

Основная цель здесь — запустить и запустить узел и иметь разумную среду IDE для работы. Web Matrix — отличный инструмент

Установить веб-матрицу

image001

Рисунок 1: Установка веб-матрицы

Установка узла

Давайте установим Node в точке. Ссылка для скачивания для узла http://nodejs.org/

image002

Рисунок 2: Установка Node.js в Windows

После установки

Все необходимые вам файлы узлов теперь находятся здесь: c: \ program files \ nodejs

Запуск веб-матрицы и начало нового проекта

Мы уже установили Web Matrix. Пришло время начать писать привет мир. Выберите из галереи шаблонов.

Выбрать из галереи шаблонов

В меню «Файл» выберите «Сайт из галереи шаблонов».

image003

Рисунок 3: Галерея шаблонов веб-матриц

Просмотр проекта по умолчанию

Вам нужно будет указать название сайта. Для вас будет создан веб-сайт Azure. Это будет то место, где мы развернемся, когда будем готовы.

image004

Рисунок 4: Определение веб-сайта Azure

Получение папки вашего проекта

Если щелкнуть правой кнопкой мыши в решении, вы можете выбрать «Показать файл в Проводнике». Это позволяет вам легко переходить к папке, если вы копируете путь в буфер обмена. Мы перейдем к папке нашего проекта, чтобы установить пакеты узла Azure. Запустим утилиту «npm» который позволяет вам устанавливать новые пакеты с сайта npm прямо в наш проект узла из Web Matrix.

image005

Рисунок 5: Как добраться до папки проекта

Командная строка

Командная строка — это место, где вы фактически добавите необходимые пакеты узлов.

image006

Рисунок 6: Командная строка

Регулировка пути

Вам нужно будет исправить свой путь, чтобы убедиться, что исполняемые файлы узла доступны.

image007

Рисунок 7: Настройка пути

Простая команда NPM

Обратите внимание, что у нас есть некоторые параметры, доступные через NPM.

image008

Рисунок 8: Использование NPM

Установите пакет Azure

Просто наберите npm и установите Azure.

image009

Рисунок 9: Установка пакета Azure

Проверка пакета (ов)

Ниже вы можете увидеть, что у нас установлено несколько модулей. Вы можете развернуть папку node_modules, чтобы увидеть, что установлено.

image010

Рисунок 10: Просмотр пакета

Написание некоторого кода для node.js

Теперь мы можем начать писать код для node.js.

Одной из первых вещей, которые вам понадобятся, является строка соединения для вашего соединения по служебной шине. Вы можете получить это на портале.

Вы также можете получить его с портала, как показано ниже.

image011

Рисунок 11: Получение строки подключения служебной шины

Некоторый код Node.js (server.js)

Ниже приведен код для чтения сообщений из очереди служебной шины Azure.

Основной пример кода

var azure = require('azure');
var http = require('http');
var queue = 'samplequeue';
 
var error;
 
 
http.createServer(function (req, res) {
 
    var connString1 = 'Endpoint=sb://smartdoorqueue-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[get this from the portal]';
 
    console.log('createServiceBusService2()');
 
    // Crucial function call to get connected. Make sure  you have the proper
    // configuration with auzre to run
    serviceBusServiceClient = azure.createServiceBusService(connString1);
    console.log('create topic()');
    serviceBusServiceClient.createTopicIfNotExists('MyTopic3', function (error) {
        if (!error) {
            // Topic was created or exists
            console.log('topic created or exists.');
        }
        else {
            console.log(error);
        }
    });
 
    // Helps with error tracking
    console.log('call receiveMessage()');
 
 
 
    receiveMessages();
 
    // Get rid of output to browser for now
    //res.writeHead(200, { 'Content-Type': 'text/html' });
    //res.end('Hello, world 6!');
 
}).listen(process.env.PORT || 8081);
 
 
// Here is the code that will receive the first 2 messages in the queue.
 
function receiveMessages() {
  // Step 2: Receive the messages.
  serviceBusServiceClient.receiveQueueMessage(queue, true, function (error1, message1) {
    if (error1) {
      console.log(error1);
    } else {
      console.log(message1.body);
      serviceBusServiceClient.receiveQueueMessage(queue, true, function (error2, message2) {
        if (error2) {
          console.log(error2);
        } else {
          console.log(message2.body);
        }
      });
    }
  });
}
 
 
 
 
 
/*   OLD HELLO WORLD CODE
var http = require('http');
 
http.createServer(function (req, res) {
   
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end('Hello, world!');
   
}).listen(process.env.PORT || 8080);
 
 
*/ 

Просмотр вывода из сообщений в очереди

Теперь это простой случай запуска кода путем нажатия кнопки « Выполнить» на панели инструментов WebMatrix. Вот как выглядит результат:

image013

Рисунок 13: Просмотр сообщения из очереди служебной шины

Вывод

В этом простом сообщении показано, как можно использовать Node.js для чтения сообщений из служебной шины Azure.