尝试通过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>
答案 0 :(得分:0)
我尝试重现您的问题,但未能收到任何错误信息。
根据REST API “Send Message”,500状态代码表示内部错误不是由客户端源代码引起的。
所以我认为你可以尝试再次运行代码。
如果您仍然遇到相同的错误或其他错误,您是否可以分享更多信息以帮助分析问题?
如有任何疑虑,请随时告诉我。
答案 1 :(得分:0)
我终于找到了问题的原因。真正的错误是&#34;找不到具有MessageId的消息的匹配订阅。&#34;。在主题配置中出现此错误&#34;在发布之前过滤消息&#34;已选中且不存在匹配的订阅。
问题是Azure Java SDK使用的Azure REST API调用,而不是找不到匹配订阅的信息,只返回500内部服务器错误..只有来自Azure .NET SDK的调用才会返回异常有用的评论。