如何在活动 mq Web 控制台 localhost:8161 中发送消息的消息头(属性)?

Posted

技术标签:

【中文标题】如何在活动 mq Web 控制台 localhost:8161 中发送消息的消息头(属性)?【英文标题】:How to send message headers (properties) for a message in active mq web console localhost:8161? 【发布时间】:2018-01-17 03:46:56 【问题描述】:

我在网上搜索了很多,找不到任何答案。

【问题讨论】:

【参考方案1】:

您不能,控制台提供的消息发送功能非常有限。如果您想发送完整的消息,请使用 JMS 客户端。

【讨论】:

【参考方案2】:

您可以使用JMSToolBox 之类的应用程序

【讨论】:

【参考方案3】:

在这种情况下不能使用 Activemq 控制台,但您可以使用 curl 命令发送带有暴露 Web 控制台 API 的标头的消息。请参考以下链接:

ActiveMQ Rest

例如,使用下面的命令,使用属性“key=2dffvdfbfd”

curl -XPOST -d "body=Test message" -d "key=2dffvdfbfd" http://admin:admin@<brokerIp>:8161

【讨论】:

你知道这个构建了什么请求吗?我正在尝试在 Rest Client 中为 VS 代码构建请求,但我不知道如何传递这些属性。 正确的端点 URI 是 http://admin:admin@&lt;brokerIp&gt;:8161/api/message?destination=&lt;queue:topic&gt;://&lt;destination-name&gt;。这确实允许提供额外的 JMS 属性。 更准确地说,destinationJMS 属性可以在 URI 中提供或作为表单数据(您的选择)提供,但 URI 中的尾随 /api/message 是强制性的。【参考方案4】:

Web 控制台不允许发送自定义 jms 标头或属性。

所以,你需要使用rest api:

http://activemq.apache.org/rest.html

以下 curl 对我有用:

activemq 5.14.x 队列名称 = avenger_tasks 正文消息 = 'a': 'b' jms 标头名称 = JMSCorrelationID jms 标头值 = 9999
    curl -H 'Authorization: Basic YWabcdefg==' \
    -d "body='a': 'b'"  \
    -d "JMSCorrelationID=9999" \
    -d "JMSReplyTo=NickFury"   \
    -d "SomeProperty=SomeValue"   \
    http://localhost:8161/api/message/avenger_tasks?type=queue

或者使用用户名和密码

    curl -u admin:admin \
    -d "body='a': 'b'"  \
    -d "JMSCorrelationID=9999" \
    -d "JMSReplyTo=NickFury"   \
    -d "SomeProperty=SomeValue"   \
    http://localhost:8161/api/message/avenger_tasks?type=queue

【讨论】:

以上是关于如何在活动 mq Web 控制台 localhost:8161 中发送消息的消息头(属性)?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Web Socket - 从 MQ 监听器通知客户端

活动 MQ 嵌入式代理;在生产中实用且可靠?

活动 MQ 与 JBoss 消息传递

一个 JMS 消费者停止监听活动的 mq 主题,而第二个没有

活动 MQ JMX SSL

mq消费者数量如何定义