消息代理中的消息格式

我是消息代理的新手,我正在尝试运行一个简单的项目,该项目向代理发送消息“ Hello”。消息代理是activeMQ。

using System;
using Amqp;

namespace Sender
{
    class Program
    {
        static void Main(string[] args)
        {
            Address address = new Address("amqp://guest:guest@localhost:5672");
            Connection connection = new Connection(address);
            Session session = new Session(connection);

            Message message = new Message("Hello");
            SenderLink sender = new SenderLink(session,"sender-link","test");
            sender.Send(message);


            sender.Close();
            session.Close();
            connection.Close();
        }
    }
}

但是,当我在activeMQ的Web控制台中看到消息时,它将消息详细信息显示为“Sw¡Hello”。我不明白为什么它要打印一些额外的字符。有人可以帮我吗?

einspei 回答:消息代理中的消息格式

在ActiveMQ控制台中,AMQP消息正文的布局可能与实际内容略有不同,因为消息已转换为代理自己的内部协议的中间形式,称为 Openwire 。因此,您不应该指望那里的格式完全正确,因为代理可能正在保留完全重建AMQP消息所需的其他数据,或者可能只是将其存储为原始字节消息,这意味着消息正文将具有UTF8大小。编码保留在正文中的字节。

要检查的更重要的事情是,如果您使用AMQP客户端使用消息,则会获得预期的有效负载。

从AMQP到Openwire的消息的内部交叉编码由配置的AMQP转换器控制,请参见文档here

,

就代理而言,任何消息的主体都只是字节数组。这些字节可以是二进制数据或文本数据。如果是文本,则可以使用US-ASCII,UTF-8,UTF-16等对字符进行编码。代理不知道也不在乎。

Web控制台会尽最大努力打印数据以用于管理目的,但是它不能始终使所有内容正确,这几乎可以肯定是为什么您看到奇数字符的原因。

检查消息中数据的真正方法是实际使用它并以此方式验证其内容。

本文链接:https://www.f2er.com/3156912.html

大家都在问