WedX - журнал о программировании и компьютерных науках

Как отправить сообщение через посредника с помощью REST API

Согласно MSDN, брокерское сообщение может быть отправлено через REST API, и это брокерское сообщение может иметь пару значений ключа свойств как часть сообщения. Мне удалось отправить сообщение через брокера, но когда я его получаю, поле «Свойства» в сообщении не заполняется. Я должен неправильно кодировать свойства JSON.

Вот фрагмент кода

        WebClient webClient = new WebClient();
        webClient.Headers[HttpRequestHeader.Authorization] = _token;
        webClient.Headers["Content-Type"] = "application/atom+xml;type=entry;charset=utf-8";
        Guid messageId = Guid.NewGuid();
        webClient.Headers["BrokerProperties"] = @"{""MessageId"": ""{" + messageId.ToString("N") + @"}"", ""TimeToLive"" : 900, ""Properties"": [{""Key"" : ""ProjectId"", ""Value"" : """ + message.ProjectId + @"""}]}";

        // Serialize the message
        MemoryStream ms = new MemoryStream();
        DataContractSerializer ser = new DataContractSerializer(typeof(RespondentCommitMessage));
        ser.WriteObject(ms, message);
        byte[] array = ms.ToArray();
        ms.Close();

        byte[] response = webClient.UploadData(fullAddress, "POST", array);
        string responseStr = Encoding.UTF8.GetString(response);

У кого-нибудь есть пример отправки BrokeredMessage с использованием HTTP-заголовка BrokerProperties?

17.10.2011

Ответы:


1

Похоже, команда сервисной шины разместила несколько образцов сервисной шины Silverlight и Windows Phone на codeplex по адресу https://servicebus.codeplex.com/. Я быстро просмотрел код примера чата Silverlight, и оказалось, что в нем есть все, что мне нужно для публикации сообщений через посредника через RESTFull API.

18.10.2011

2

Мне пришлось самому провести небольшое исследование/поработать с REST API для служебной шины Azure, поэтому я избавлю вас, ребята, от необходимости копаться в примере чата Silverlight, указанном в принятом ответе, и дать вам фактическую информацию.

Вам нужно знать всего две вещи:

1) Заголовок HTTP-запроса BrokerProperties не эквивалентен коллекции BrokeredMessage.Properties.

Словарь свойств объекта BrokeredMessage представляет собой набор настраиваемых свойств, а в заголовке HTTP-запроса BrokerProperties указываются встроенные свойства, обычно связанные с BrokeredMessage, такие как Label, TimeToLive и т. д.

2) Все настраиваемые заголовки HTTP-запросов рассматриваются как настраиваемые свойства.

Из MSDN: В дополнение к этим свойствам (ссылаясь на BrokerProperties) вы можете указать пользовательские свойства. Если отправляется или принимается одно сообщение, каждое пользовательское свойство помещается в собственный заголовок HTTP. Если отправляется пакет сообщений, настраиваемые свойства являются частью тела HTTP, закодированного в формате JSON.

Это означает, что все, что вам нужно сделать, чтобы добавить свои пользовательские свойства, — это добавить заголовок, например:

    public static void SendMessageHTTP(string bodyContent, params KeyValuePair<string,object>[] properties)
    {
        //BrokeredMessage message = new BrokeredMessage(bodyContent);            
        //foreach(var prop in properties)
        //{
        //    message.Properties[prop.Key] = prop.Value;
        //}

        ...

        WebClient webClient = new WebClient();
        webClient.Headers[HttpRequestHeader.Authorization] = token;
        webClient.Headers[HttpRequestHeader.ContentType] = "application/atom+xml;type=entry;charset=utf-8";

        foreach (var prop in properties)
        {
            webClient.Headers[prop.Key] = prop.Value.ToString();
        }
        webClient.Headers["MyCustomProperty"] = "Value";

        webClient.UploadData(messageQueueURL, "POST", Encoding.UTF8.GetBytes(bodyContent));            
    }

Очень полезно прочитать справку MSDN по конечной точке API отправки сообщений. и введение в сам REST API (здесь говорит о пользовательских свойствах). Здесь также есть статья с примером кода на Документация веб-сайта Azure.

28.10.2015
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]