从天青服务总线接收空字节阵列Imessage.content

问题描述 投票:0回答:1

我目前使用两个不同的平台进行同步操作。所以,当动作发生在平台1(C# - 视觉工作室),同样的行动,那么需要在平台2(JAVA)的情况发生。要做到这一点,我使用SB(Azure的服务总线),两个平台之间共享的JSON消息。

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

工作正常。该消息被发送和接收,正是因为它应该是。

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

不工作。该消息被正确地发送到SB,但是当它拾取,所述内容属性仅包含一个空数组,当它应该是(包含消息)的字节的阵列。其他消息属性类似的contentType,的replyTo等设置是否正确,所以该消息被越来越拿起罚款。这只是没有内容或者换句话说邮件正文。

操作3:天青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) {

    }
}

我的理解是正确的或者可能还有另一种解释吧!

azure service synchronization bus
1个回答
0
投票

我的理解是正确的或者可能还有另一种解释吧!

这是非常奇怪的是,如果你从Java平台发送消息,消息的内容是空的。

根据我的理解,似乎该消息内容为空当您发送到ABS。我推荐你可以检查Java发送到ABS之前发送短信代码。

您ALSE可以使用Azure Service bus exploer得到消息后的信息发送到ABS [从.Net平台之前收到。

© www.soinside.com 2019 - 2024. All rights reserved.