【问题标题】:Setting a message property to be an integer using stomp (ruby) to ActiveMQ使用 stomp (ruby) 到 ActiveMQ 将消息属性设置为整数
【发布时间】:2018-10-31 01:25:06
【问题描述】:

当我向 activemq 发送消息时,我必须将名为 SEQUENCE 的自定义消息属性设置为整数。正如 activemq 站点所解释的,STOMP 协议只处理字符串。因此,据我了解,使用 STOMP 无法做到这一点。有没有其他方法可以使用 Ruby 将标头设置为具有整数值?

来自http://activemq.apache.org/cms/stomp-support.html

Stomp CMS 中的消息属性 由于 Stomp 是严格基于文本的,它 不支持指定消息属性类型的方法 (在 stomp 术语中称为“标题”)。这意味着一个属性发送为 Stomp CMS 客户端可以将整数读取为以下任何一种:字符串, 整数、短、长等。

例如,当 Java 客户端向代理发送带有 整数属性(“myval”=1),代理调整消息来自 openwire 跺脚并在此过程中将属性“myval”转换为 字符串“1”并将消息发送给客户端。客户端 接收字符串,但允许用户以任何方式读取此值 这将与 std::istringstream >> 运算符一起成功运行。

将值写入传出消息也是如此。你可以打电话 任何方法(例如 setIntProperty)。结果值 然而,电线上的熄灭仍然是一个字符串。

【问题讨论】:

    标签: ruby activemq stomp


    【解决方案1】:

    通过网络发送的任何内容都必须是 UTF-8 编码的字符串,因为这是 STOMP 所允许的(它是基于文本的协议)。代理将属性中的值视为字符串,并在使用 OpenWire 或 AMQP 时将它们转换为这些协议的正确编码字符串。在客户端上,您可以使用现有的任何语言功能将字符串转换为数字形式,并且需要处理可能由错误解码导致的错误。

    【讨论】:

    • 谢谢,这是一个很好的解释。所以没有办法将标头值从字符串“转换”为整数?在它击中客户之前?我正在查看 jms-map-json 标头,但没有让它工作。
    • 不,因为正如我所说的,STOMP 是一个基于文本的协议,所以在网络上一切都是文本,句号。客户需要聪明才智进行转换
    猜你喜欢
    • 2011-12-24
    • 2021-11-22
    • 1970-01-01
    • 2018-08-22
    • 2018-07-19
    • 2019-09-29
    • 2015-07-15
    • 2019-08-18
    • 2019-07-02
    相关资源
    最近更新 更多