通过Azure Java SDK将消息发送到Service Bus主题时出现500内部服务器错误

时间:2016-04-25 13:30:20

标签: java azure azure-java-sdk azure-servicebus-topics

尝试通过java azure sdk向服务总线主题发送消息时遇到问题,我收到500内部服务器错误。

我根据以下链接准备了代码: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-version的问题。为什么图书馆在请求中放置了如此旧的api-version?我使用maven存储库中最新版本的azure sdk:

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

2 个答案:

答案 0 :(得分:0)

我尝试重现您的问题,但未能收到任何错误信息。

根据REST API “Send Message”,500状态代码表示内部错误不是由客户端源代码引起的。

所以我认为你可以尝试再次运行代码。

如果您仍然遇到相同的错误或其他错误,您是否可以分享更多信息以帮助分析问题?

如有任何疑虑,请随时告诉我。

答案 1 :(得分:0)

我终于找到了问题的原因。真正的错误是&#34;找不到具有MessageId的消息的匹配订阅。&#34;。在主题配置中出现此错误&#34;在发布之前过滤消息&#34;已选中且不存在匹配的订阅。

问题是Azure Java SDK使用的Azure REST API调用,而不是找不到匹配订阅的信息,只返回500内部服务器错误..只有来自Azure .NET SDK的调用才会返回异常有用的评论。