2014-04-22 85 views
1

我試圖找到使用REST從瀏覽器讀取Azure Service Bus主題訂閱的替代方法。看起來像SignalR將是一個很自然的事情,但我似乎無法找到任何人做到這一點。我不是在談論擴展,只是一個將一組Service Bus功能來回傳遞給瀏覽器的SignalR Hub。我想的功能,如,

addReceiver(string topic, string subscriptionID);
defineSubscription(string name, string subscriptionRule);
deleteSubscription(string name);
postMessageToTopic(string topic, string message);

addReceiver將啓動一個異步接收的訂閱。每次從Service Bus得到消息時,都會在JS客戶端上調用一個函數。如何將SignalR用作Azure服務總線傳輸?

回答

2

下面是一些代碼,以人在正確的方向。

namespace SBTester 
{ 
    public class SBHub : Hub 
    { 
     public void AddReceiver(string topic, string subscriptionName, string subscriptionFilter) 
     { 
      string messageData; 

      TopicConnector.Initialize( topic, 
             Context.ConnectionId + "." + subscriptionName, 
             subscriptionFilter); 

      // Initiate receive loop on Service Bus 
      TopicConnector.SBClient.OnMessage((receivedMessage) => 
      { 
       try 
       { 
        // Process the message 
        messageData = receivedMessage.GetBody<string>(); 
        Clients.Caller.onMessage(topic, messageData); 
       } 
       catch 
       { 
        // Handle any message processing specific exceptions here 
       } 
      }); 
     } 
     public void DefineSubscription(string topic, string subscriptionRule) 
     { 
      // Call Service Bus to create Subscription on the Specified topic 
     } 
     public void PostMessageToTopic(string topic, string message) 
     { 
      // Call Service Bus to send a message 
      Clients.All.addNewMessageToPage(topic, message); 
     } 

    } 
} 
0

從集線器的代碼,你可以直接調用服務總線API來發送信息或直接使用服務總線的API從JavaScript /瀏覽器:http://developers.de/blogs/damir_dobric/archive/2014/03/27/microsoft-azure-service-bus-receiving-of-messages-from-queue-and-topic-with-javascript.aspx

+0

謝謝阿布舍克。我希望有人已經實現了Hub代碼來調用Service Bus。 (微軟應該考慮這樣做!)來自Damir Dobric的東西雖然不錯,但它使用REST API與ServiceBus進行通信,這正是我試圖擺脫的地方。 – PrgTrdr