1

尝试通过 java azure sdk 向服务总线主题发送消息时遇到问题,我收到 500 Internal Server Error。

我根据此链接准备了代码: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 版本?我使用来自 maven 存储库的最新版本的 azure sdk:

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

2 回答 2

0

我终于设法找到问题的原因。真正的错误是“没有为带有 MessageId .. 的消息找到匹配的订阅”。当在主题配置中选中“发布前过滤消息”选项并且不存在匹配的订阅时,会发生此错误。

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

于 2016-04-26T15:59:17.083 回答
0
于 2016-04-26T07:34:46.463 回答