2016-04-25 43 views
0

將消息發送到服務總線話題我有一個問題,當試圖發送消息通過Java SDK湛藍服務總線話題,我收到500內部服務器錯誤。500內部服務器錯誤,同時通過Azure的Java SDK的

我根據這個鏈接上編寫代碼:https://azure.microsoft.com/en-us/documentation/articles/service-bus-java-how-to-use-topics-subscriptions/和我的代碼看起來像下面:

Configuration config = ServiceBusConfiguration.configureWithSASAuthentication(
    "NAMESPACE", 
    "SAS_NAME", 
    "SAS_KEY_VALUE", 
    ".servicebus.windows.net");  
ServiceBusContract service = ServiceBusService.create(config); 
try { 
    BrokeredMessage message = new BrokeredMessage("Message content"); 
    service.sendTopicMessage("TOPIC_NAME", message); 
} catch (ServiceException e) { 
    e.printStackTrace(); 
} 

我能夠將消息發送與.NET代碼相同的配置值。

這裏是我收到異常:「com.sun.jersey.api.client.UniformInterfaceException:POST https://NAMESPACE.servicebus.windows.net/TOPIC_NAME/messages?api-version=2013-07返回500內部服務器錯誤的響應狀態」

我也有一個關於API-問題版。爲什麼一個圖書館在請求中放入這麼老的api版本?我使用來自maven資源庫的最新版本的azure sdk:

<dependency> 
    <groupId>com.microsoft.azure</groupId> 
    <artifactId>azure-servicebus</artifactId> 
    <version>0.9.3</version> 
</dependency> 

回答

0

我終於找到了問題的原因。真正的錯誤是「使用MessageId找不到與消息匹配的訂閱..」。在主題配置中選中「發佈前篩選消息」選項並且不存在匹配的訂閱時,會發生此錯誤。

問題是Azure Java SDK使用Azure REST API而不是有關未找到匹配訂閱的信息的調用返回500個內部服務器錯誤。只有來自Azure .NET SDK的調用返回例外與有用的評論。

0

我試圖重現您的問題,但未能獲取任何錯誤信息。

根據REST API 「Send Message」,500狀態代碼意味着內部錯誤不是由您的客戶端源代碼引起的。

所以我認爲你可以嘗試再次運行該代碼。

你能分享幫助分析問題,如果你仍然得到同樣的錯誤或其他人的更多信息?

任何問題,請隨時讓我知道。

+0

我仍然有這個問題,我運行它幾次,總是收到相同的錯誤。我沒有直接訪問azure,我只有SAS和主題的詳細信息,需要發送消息到該主題。我想知道是否可以通過azure sdk庫添加到REST請求中的api-version?我不知道是否有可能,但我會嘗試通過REST API直接向主題發送消息,而不使用azure sdk。 – Rem