0

RSS リーダーを使用して、クライアントが Azure サービス バスのトピックをサブスクライブできるようにしたいと考えています。

サービスバスからフィードを動的に生成する方法に関するドキュメントが見つからないようです

誰でも私に何か指針を与えることができますか?

4

1 に答える 1

2

Service Bus は、「サービス レジストリ」と呼ばれる名前空間のルートに ATOM フィードをすべて単独で生成します。これは https://yournamespace.servicebus.windows.netにあり、そこに移動すると空として表示される可能性が非常に高くなります。ブラウザ。

名前空間フィード (ATOM フィードの入れ子構造) を探索するには、HTTP GET 要求の "Authorization" または "ServiceBusAuthorization" ヘッダーで、名前空間のルートに対する"管理" アクセス権を持つ SAS トークンを提示する必要があります。標準の「RootManageSharedAccessKey」ルールにはその権利があります。

    class Program
    {
        static void Main(string[] args)
        {
            // for connection string: 
            // Endpoint=sb://[[yournamespace]].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[[key]]

             var tp = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", "[[key]]");
            var token = tp.GetWebTokenAsync("http://[[yournamespace]].servicebus.windows.net/", string.Empty, true, TimeSpan.FromHours(1))
                .GetAwaiter()
                .GetResult();
            Console.WriteLine(token);
        }
    }

上記のスニペットをコンソール アプリ (SB NuGet パッケージを使用) で使用すると、必要なトークン文字列を取得して HTTP ヘッダーに挿入できます。

ルートでの HTTPS GET のために、Fiddler のコンポーザの名前空間の 1 つで HTTP "Authorization:" ヘッダーでそのトークンを使用すると、次のようになります。

<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Publicly Listed Services</title>
  <subtitle type="text">This is the list of publicly-listed services currently available.</subtitle>
  <id>uuid:f1ccc436-e5bb-47f7-b780-a7d06e942d51;id=843</id>
  <updated>2016-01-05T12:30:33Z</updated>
  <generator>Service Bus 1.1</generator>
  <entry>
    <id>uuid:f1ccc436-e5bb-47f7-b780-a7d06e942d51;id=844</id>
    <title type="text">democtrl</title>
    <updated>2016-01-05T12:30:34Z</updated>
    <link rel="alternate" href="http://clemensveu.servicebus.windows.net/democtrl"/>
  </entry>
  <entry>
    <id>uuid:f1ccc436-e5bb-47f7-b780-a7d06e942d51;id=845</id>
    <title type="text">hshsjsjshjshsjhsjhs</title>
    <updated>2016-01-05T12:30:34Z</updated>
    <link rel="alternate" href="http://clemensveu.servicebus.windows.net/hshsjsjshjshsjhsjhs"/>
  </entry>
  <entry>
    <id>uuid:f1ccc436-e5bb-47f7-b780-a7d06e942d51;id=846</id>
    <title type="text">iotev2</title>
    <updated>2016-01-05T12:30:34Z</updated>
    <link rel="alternate" href="http://clemensveu.servicebus.windows.net/iotev2"/>
  </entry>
  <entry>
    <id>uuid:f1ccc436-e5bb-47f7-b780-a7d06e942d51;id=847</id>
    <title type="text">samplequeue</title>
    <updated>2016-01-05T12:30:34Z</updated>
    <link rel="alternate" href="http://clemensveu.servicebus.windows.net/samplequeue"/>
  </entry>
  <entry>
    <id>uuid:f1ccc436-e5bb-47f7-b780-a7d06e942d51;id=848</id>
    <title type="text">stelemetryqueue</title>
    <updated>2016-01-05T12:30:34Z</updated>
    <link rel="alternate" href="http://clemensveu.servicebus.windows.net/stelemetryqueue"/>
  </entry>
  <entry>
    <id>uuid:f1ccc436-e5bb-47f7-b780-a7d06e942d51;id=849</id>
    <title type="text">testqueue</title>
    <updated>2016-01-05T12:30:34Z</updated>
    <link rel="alternate" href="http://clemensveu.servicebus.windows.net/testqueue"/>
  </entry>
</feed>

testqueue のリンクをたどると (ただし、トークンを保護するために HTTPS を使用)、

<entry xmlns="http://www.w3.org/2005/Atom">
  <id>https://clemensveu.servicebus.windows.net/testqueue</id>
  <title type="text">testqueue</title>
  <published>2015-09-07T09:33:46Z</published>
  <updated>2015-09-07T09:34:17Z</updated>
  <author>
    <name>clemensveu</name>
  </author>
  <link rel="self" href="https://clemensveu.servicebus.windows.net/testqueue"/>
  <content type="application/xml">
    <QueueDescription xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <LockDuration>PT30S</LockDuration>
      <MaxSizeInMegabytes>16384</MaxSizeInMegabytes>
      <RequiresDuplicateDetection>false</RequiresDuplicateDetection>
      <RequiresSession>false</RequiresSession>
      <DefaultMessageTimeToLive>P14D</DefaultMessageTimeToLive>
      <DeadLetteringOnMessageExpiration>false</DeadLetteringOnMessageExpiration>
      <DuplicateDetectionHistoryTimeWindow>PT10M</DuplicateDetectionHistoryTimeWindow>
      <MaxDeliveryCount>10</MaxDeliveryCount>
      <EnableBatchedOperations>true</EnableBatchedOperations>
      <SizeInBytes>1550</SizeInBytes>
      <MessageCount>5</MessageCount>
    </QueueDescription>
  </content>
</entry>
于 2016-01-05T11:59:33.077 に答える