当我使用PHP-Stomp向activemq发送消息时,该消息将作为bytesmessage发送。不过,我想发一条短信。
根据STOMP documentation这可以通过不发送内容长度报头来实现:
…但是,协议确实支持内容长度
标题。在stomp和jms之间提供更健壮的交互
客户端,此头包含的activemq密钥
确定从stomp发送到jms时要创建的消息类型。
逻辑很简单:
包含内容长度头=>结果消息
是=>BytesMessage
否=>文本消息
从jms到stomp也可以遵循同样的逻辑。
可以将stomp客户机写入到
用于确定要使用的消息结构类型的内容长度头
提供给用户。
在我的测试php脚本中,我没有定义content-length头,它似乎是自动添加的。
我还尝试将内容长度传递为0、false或null。在所有这些情况下,它都会产生bytesmessage。
所以我的问题是,如何生成文本消息而不是bytesmessage。
我的代码如下所示:
<?php
$stomp = new Stomp('tcp://localhost:61613');
$stomp->send('/topic/test.central_message_topic', 'testmessage', [
"persistent" => "true",
]);
最佳答案
很长一段时间了,但这对我有效:
try {
$stomp->send("your_queue", "your_message", array("amq-msg-type" => "text"));
} catch (StompException $e) {
die('send failed: ' . $e->getMessage());
}