为什么QueueSession在JMS中只能创建一个接收者?

发布于 2024-11-01 21:22:21 字数 148 浏览 2 评论 0原文

我可以让一些发送者发送一些消息,但是当我在一个会话中创建两个接收者时,第一个接收者有效,第二个接收者被阻止。在调试中,我看到第二个接收器收到的队列列表大小为零。我发现session是为一个线程创建的,不知道这个问题是否涉及到不安全线程?

我使用ActiveMQ实现。

I can make some senders to send some messages, but when I create two receivers in one Session, the first one works and the second one blocked. In debug, I see the queue list size which the second receiver received is zero. I found that session is made for one thread, I don't know whether this problem involves in the unsafe thread?

I use ActiveMQ implementation.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

听闻余生 2024-11-08 21:22:21

JMS 会话绝对是单线程的。因此,它只能有一个活动接收器。您有 2 个选择:

  1. 使用一个连接进行多个会话,每个会话都有一个接收器。连接是线程安全的,您可以从单个连接创建许多会话。
  2. ActiveMQ 为您提供了许多关于多路复用多个目标的选项,因此不必拥有多个接收器,您可能希望专注于其中一个,但使用 ActiveMQ 的工具来创建虚拟目标,该目标将通过一个接收器汇集您想要的所有消息。

请参阅此问题

A JMS Session is absolutely single threaded. As such, it can only have one active receiver. You have 2 options:

  1. Use one connection with multiple sessions, each session having a receiver. Connections are thread safe and you can create many sessions from that single connections.
  2. ActiveMQ gives you a number of options regarding multiplexing multiple destinations, so rather than having multiple receivers, you might want to focus on one, but use ActiveMQ's facilities to create virtual destinations that will funnel all the messages you want through the one receiver.

See this question.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文