CRM Dynamics Online 2016 Azure SDK for Java接收包含500个错误代码的代理消息
我对CRM Dynamics Online 2016 Azure SDK for Java有问题。 我可以连接到Azure服务总线,可以看到队列和队列中的消息计数,但无法接收消息。消息Id为空,消息正文包含500个错误CRM Dynamics Online 2016 Azure SDK for Java接收包含500个错误代码的代理消息,java,azure,crm,microsoft-dynamics,Java,Azure,Crm,Microsoft Dynamics,我对CRM Dynamics Online 2016 Azure SDK for Java有问题。 我可以连接到Azure服务总线,可以看到队列和队列中的消息计数,但无法接收消息。消息Id为空,消息正文包含500个错误 500服务器无法处理 要求请重试该操作。如果问题仍然存在,请 请与服务总线管理员联系并提供跟踪id。 TrackingId:acf8a543-33c9-486d-b13b-443823e6c394_G9,时间戳:4/13/2016 上午7:26:22。如果问题仍然存在,请与联系
500
服务器无法处理
要求请重试该操作。如果问题仍然存在,请
请与服务总线管理员联系并提供跟踪id。
TrackingId:acf8a543-33c9-486d-b13b-443823e6c394_G9,时间戳:4/13/2016
上午7:26:22。如果问题仍然存在,请与联系
请与服务总线管理员联系,并提供跟踪id。
TrackingId:acf8a543-33
互联网上有解决这个问题的工作样本吗
测试代码:
@Test
public void readAllExistedMessagesFromAllQueue() {
try {
ServiceBusContract serviceBusContract = ServiceBusConfiguration.configureWithConnectionString(null, Configuration.load(), ASB_CONNECTION_STRING).create(ServiceBusContract.class);
ReceiveMessageOptions opts = ReceiveMessageOptions.DEFAULT;
opts.setReceiveMode(ReceiveMode.PEEK_LOCK);
ListQueuesResult result = serviceBusContract.listQueues();
if (result != null && result.getItems().size() > 0) {
for (QueueInfo queueInfo : result.getItems()) {
logger.debug("queu: " + queueInfo.getPath() + " MessageCount: " + queueInfo.getMessageCount());
for (int i = 0; i < result.getItems().size(); i++) {
BrokeredMessage message = serviceBusContract.receiveQueueMessage(queueInfo.getPath(),
opts).getValue();
if (message == null) {
continue;
}
System.out.print("__________________________________________");
System.out.println("MessageID: " + message.getMessageId());
System.out.print("From queue: ");
byte[] b = new byte[200];
String s = null;
int numRead = message.getBody().read(b);
while (-1 != numRead) {
s = new String(b);
s = s.trim();
System.out.print(s);
numRead = message.getBody().read(b);
}
System.out.println();
}
}
}
} catch (IOException e) {
logger.error(e);
} catch (ServiceException e) {
logger.error(e);
}
}
@测试
public void readAllExistedMessagesFromAllQueue(){
试一试{
ServiceBusContract ServiceBusContract=ServiceBusConfiguration.configureWithConnectionString(null,Configuration.load(),ASB_CONNECTION_STRING)。创建(ServiceBusContract.class);
ReceiveMessageOptions opts=ReceiveMessageOptions.DEFAULT;
选择setReceiveMode(ReceiveMode.PEEK_LOCK);
ListQueuesResult结果=serviceBusContract.listQueues();
if(result!=null&&result.getItems().size()>0){
对于(QueueInfo:result.getItems()){
logger.debug(“queu:+queueInfo.getPath()+”MessageCount:+queueInfo.getMessageCount());
for(int i=0;i
根据我的经验,根据Service Bus的和,ServiceBusContract
是一个Java接口,您不能直接创建接口的实例ServiceBusContract
因此,请尝试使用文档“如何使用服务总线队列”中的以下代码
配置=
ServiceBusConfiguration.ConfigureWithAsAuthentication(
"",
“RootManageSharedAccessKey”,
"",
“.servicebus.windows.net”
);
ServiceBusContract ServiceBusContract=ServiceBusService.create(配置);
更新 通过单击服务总线页面底部的下面按钮,可以在连接字符串中找到
SharedAccessKeyName
&SharedAccessKey
然后,显示下面的视图并复制连接字符串
。
连接字符串如下所示
Endpoint=sb://.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=
请复制连接字符串的正确部分,而不是代码的相关部分。请给出您的代码将代码添加到问题此类连接给出以下响应的响应正文:
401
此操作需要管理声明。TrackingId:92a0330b-a3cb-429f-b57a-4f4afa1490a8_G44,时间戳:4/14/2016 7:34:12 AM'@KarlisAcc 401错误代码表示“授权失败”。您是否为配置使用了正确的sas键?请查看我的更新内容。我的ASB_连接_字符串是“Endpoint=sb://.servicebus.windows.net/;SharedSecretIssuer=;SharedSecretValue=“@KarlisAcc您从哪里复制的连接字符串?我作为连接字符串收到它,使用什么连接ASB
Configuration config =
ServiceBusConfiguration.configureWithSASAuthentication(
"<your-servicebus-namespace>",
"RootManageSharedAccessKey",
"<SAS-key-value>",
".servicebus.windows.net"
);
ServiceBusContract serviceBusContract = ServiceBusService.create(config);