从 Azure 服务总线接收 Imessage.content 的空字节数组



我目前正在使用两个不同的平台来执行同步操作。因此,当操作发生在平台 1 (C# -visual studio( 上时,同样的操作也需要在平台 2 (Java(上发生。为此,我使用 SB(Azure 服务总线(在两个平台之间共享 Json 消息。

操作 1:平台 1 ---->服务总线----->平台 2

工作正常。消息的发送和接收完全符合预期。

操作 2:平台 2 ---->服务总线---->平台 1。

不工作。消息将正确发送到 SB,但在选取消息时,content 属性仅包含一个空数组,而它应该是字节数组(包含消息(。其他消息属性(如内容类型,回复等(设置正确,因此消息可以正常拾取。只是没有内容,换句话说就是消息正文。

操作 3:Azure SB/----->服务总线----->平台发送消息 1。

工作正常。另一种选择是使用 Azure 服务总线/发送消息将 JSON 消息直接发送到服务总线,并将 JSON 消息放入其中。

对于操作 2 和 3,完全相同的消息将发送到服务总线(当我查看它时(。一个直接发送到服务总线,另一个由平台 2 生成。我认为实际消息在后台似乎有所不同,这就是为什么消息正文在操作 2 中为空的原因。

线程和进程正在正确处理。

要设置接收器:

IMessageReceiver receive r= null;
if (config.isSessionsEnabled()) {
receiver = ClientFactory.acceptSessionFromConnectionStringBuilder(new ConnectionStringBuilder(connString), config.getSessionID(), ReceiveMode.PEEKLOCK);
} else {
receiver = ClientFactory.createMessageReceiverFromConnectionStringBuilder(new ConnectionStringBuilder(connString), ReceiveMode.PEEKLOCK);
}

对于接收消息:

try {
message = receiver.receive(Duration.ofSeconds(1)); //message.Content will be empty array
if(message != null){
//process message
}                    
} catch (Exception e) {
}
}

我的理解是否正确,或者也许还有另一种解释!

我的理解是否正确,或者也许还有另一种解释!

非常奇怪的是,如果您从 Java 平台发送消息并且消息的内容为空。

根据我的理解,当您发送到ABS时,消息内容似乎为空。我命令您可以在发送到 ABS 之前检查 Java 发送消息代码。

可以使用 Azure 服务总线爆炸器在消息信息发送到 ABS [从 .Net 平台接收之前]后获取消息信息。

最新更新