问题标签 [stomp.py]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
833 浏览

python - 带有自定义标头的 Stomp.py 发送失败

我目前正在通过 python Stomp.py 库将消息从自定义系统推送到 ActiveMQ 实例。当我在发送命令中提供带有自定义标题的字典作为“标题”参数时,这将失败。

由于某种原因,标头未能向我提供此错误:

堆栈跟踪的最后一部分:

这与我在哪里实际提供字典中的任何内容或只是发送一个空字典无关。

它也独立于我在连接级别或发送(或两者)提供标头。

它似乎在某个时候将标头转换为字符串,但我无法弄清楚这是否是故意的。我也不知道如何解决这个问题。

任何线索将不胜感激。

0 投票
1 回答
1790 浏览

activemq - 如何堆叠收到的消息并批量处理它们

我想创建一个消费者来堆叠到达的消息,然后等待:

  • 直到n消息到达。
  • t秒过去了。

处理整个消息堆栈。

预取不是我想要的。我真正需要的是一起处理消息。

0 投票
1 回答
1156 浏览

python - 使用 stomp.py 时 AMQ_SCHEDULED_DELAY 不会延迟消息

ActiveMQ在 docker 容器上运行服务器。

我正在使用 AMQ_SCHEDULED_DELAY标题来延迟消息。

输出:

从输出来看,它似乎不起作用,或者我必须从 ActiveMQ 端更新一些东西。

0 投票
1 回答
727 浏览

python-2.7 - Protocol error on trying to connect using STOMP.py

In my current situation I am using the stomp.py library (http://jasonrbriggs.github.io/stomp.py/stomp.html#module-stomp.connect) to connect to an ActiveMQ instance on another server. I am on python 2.7 and the connection works just fine when no SSL is configured. I use provided connection method (1.2) to connect and provide the following parameters in addition to host and ports:

  1. ssl_key_file=ssl_key_file
  2. ssl_cert_file=ssl_cert_file
  3. ssl_version=ssl.PROTOCOL_TLSv1_2
  4. use_ssl=True

The key and cert files are text from said files which I got using the file open() method which seems to work fine.

I have tried among other options to also set the context in ssl.SSL_Context. I am quite sure the ActiveMQ uses SSL and has said protocol.

When I'm trying to connect using conn.start() I receive the following error:

I am unable to find a working example on getting stomp.py to connect using SSL, so I cannot find a way to do this.

Is there anyone out there who has seen this before?

0 投票
3 回答
8867 浏览

python - ActiveMQ - 带有 Python STOMP 客户端的 STOMP+SSL

谁能解释我如何将 SSL 添加到我正在使用的 Python STOMP 客户端。我在 ActiveMQ 配置文件中添加了 stomp+ssl 传输连接器,我的基本 Python STOMP 客户端如下:


我创建了http://activemq.apache.org/how-do-i-use-ssl.html文档中给出的密钥库和信任库,并将它们添加到SSL_OPTS代理中的环境变量中,但我找不到如何使用密钥库和信任库初始化 Python STOMP 客户端。我应该使用方法中给出的 SSL 参数stomp.Connection()吗?如果是,该怎么做?

谁能解释一下是否有其他方法可以通过 STOMP 添加 SSL?

0 投票
1 回答
331 浏览

python - 在处理完整个数据包之前,不要让 stomp.py 从 ActiveMQ 中删除数据包

我正在尝试使用stomp.py从 activemq 获取消息,然后对其进行一些处理。但是在某些情况下,某些消息的处理失败并且该消息丢失了。

在消息完全处理之前,如何防止删除消息?

例如,在我的代码中,当队列中有新条目时,将调用on_message函数并开始处理,但如果在中间被中断,则消息丢失。我该如何阻止它?

这是我的代码:

这是我的监听器类:

提前致谢。

0 投票
1 回答
1097 浏览

python - Django + Activemq 和 Web 服务器中的长时间运行连接

多年来,我一直在使用 stomp.py 和 stompest 与 activemq 进行通信,效果很好,但这主要是使用独立的 python 守护进程。

我想使用来自网络服务器的这两个库与后端进行通信,但我很难找到如何做到这一点,而无需为每个请求创建新连接。

是否有安全处理网络服务器中 TCP 连接的标准方法?在其他语言中,该级别的某种全局对象将用于连接池。

0 投票
1 回答
1015 浏览

activemq - 如何使用 Stomp.py 强制断开 ActiveMQ 连接

使用持久连接侦听消息队列时,侦听器出现错误。我通过点击CTRL-Z退出程序来模拟这一点。尝试重新连接给我一个错误,上面写着:

我尝试使用以下方法取消订阅并断开我的连接,但它不会断开我的连接。

如何强制 AMQ 服务器忘记我之前的连接?

0 投票
1 回答
1118 浏览

jms - 发送/订阅 JMS 对象、ActiveMQ Artemis 和 STOMP 时如何指定主题或队列

我正在使用 ActiveMQ Artemis 消息系统,并且正在使用 STOMP (stomp.py) 测试我的设置。

我在 Artemis 上创建了一个名为 的“地址” Site.SOF.Order.Fulfillment.Submission.ActiveOmni.Topic,并为其附加了两个队列:

  • Site.SOF.Order.Fulfillment.Submission.ActiveOmni.queue(多播)
  • Site.SOF.Order.Fulfillment.Submission.ActiveOmni.log.queue(多播)

以下是导出的绑定:

我创建了一个有权访问的用户Site.*

那么如何访问队列呢?例如,如果我像这样使用 stomp.py 命令行工具:

> subscribe Site.SOF.Order.Fulfillment.Submission.ActiveOmni.queue

我得到错误:

[username] does not have permission='CREATE_ADDRESS' on address Site.SOF.Order.Fulfillment.Submission.ActiveOmni.queue

所以我尝试添加/queue/到前面,正如我在教程中看到的那样

> subscribe /queue/Site.SOF.Order.Fulfillment.Submission.ActiveOmni.queue

但我得到同样的错误:

我可以毫无问题地发送到主题/地址。以下结果导致两个队列中都出现“hello”消息。

send Site.SOF.Order.Fulfillment.Submission.ActiveOmni.Topic "hello"

这是我缺少的命名约定吗?还是一种指定主题与队列的方法?我在这里遗漏了什么太明显而无法清楚记录的东西?

0 投票
1 回答
880 浏览

python - Stomp.py 一次不处理一条消息

我正在使用 Stomp.py 连接到标准 ACtiveMQ 服务器。我正在模拟接收器崩溃的情况,我希望能够重新启动它,并在导致它崩溃的消息之后继续从消息中运行。

我创建了两个示例脚本:

  • putMessagesToQueue.py - 这会将 56 条消息放入目的地
  • readMessagesFromQueue.py - 这将从目的地读取消息。如果它读取第 6 条消息,它将引发异常。每条消息需要 1 秒来处理

我运行测试的步骤:

  1. 我运行 putMessagesToQueue.py
  2. 我运行 readMessagesFromQueue.py - 它成功处理 5 条消息,并在消息 6 中引发异常
  3. 我终止 readMessagesFromQueue.py (ctrl-c)
  4. 我再次运行 readMessagesFromQueue.py

对于我在步骤 4 中想要的行为,我希望它从消息 7 开始处理。

但是我没有看到这一点。如果接收者使用 ack='auto' 订阅,那么在第 4 步中它不会处理任何消息 - 所有消息都从队列中消失,我丢失了 50 条消息!

如果我使用 ack='client' 或 ack='client-individual' 然后在第 4 步,它会从头开始,然后在消息 6 上再次崩溃。

这似乎表明接收者不是一次处理消息,而是一次接收每条消息并遍历每条消息。我不想要这种行为,因为我想扩大到运行 5 个接收器并且我希望分配负载。目前,我开始的第一个接收者接收所有消息并开始翻阅它们,而接收者 2-4 只是等待新消息。我希望接收者一次接收一条消息!

任何人都可以就我如何实现这个错误给出任何提示:

资源

putMessagesToQueue.py

readMessagesFromQueue.py

更新 001

通过将接收函数更改为使用 ack='client-individual' 并手动发送 ack 消息,我设法获得了上述所需的行为。(见下面的新版本)

但我仍然无法让接收者一次处理一条消息。这可以通过以下步骤来证明:

  1. 我运行 putMessagesToQueue.py
  2. 我运行 readMessagesFromQueue2.py - 它将开始处理
  3. 在新终端中运行 readMessagesFromQueue2.py

首先,第二个 readMessagesFromQueue2 什么都不做,直到第一个崩溃,然后它开始接收消息。我希望接收者的两个实例从一开始就阅读消息。

readMessagesFromQueue2.py