问题标签 [hornetq]

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 回答
595 浏览

jms - 独立的 HornetQ 和 JBoss 不能一起工作

单独使用 JBoss 5.1.0GA 和 HornetQ 2.1.2。问题是:虽然我可以使用 JMS 客户端将消息发布到 hornetQ 服务器,但我无法使用部署在 JBoss 中的 myApp 发布消息。它说 javax.naming .NameNotFoundException。我认为这是因为在 GlobalJNDI 命名空间下(从 jmx-console 查看)没有出现 ConnectionFactory。

如何使 ConnectionFactory 绑定到 GlobalJNDI 命名空间,以便 JBoss 知道它的存在?

谢谢。

0 投票
2 回答
13276 浏览

jms - HornetQ 无法验证用户

我在 ubuntu 上使用 jboss AS 6 Final 和 hornetQ

我使用管理面板在名为 Message Buffer Queue 的服务器上创建了一个新队列。

我收到以下错误:

这是我的文件:

我的 HornetQ 配置文件是

我的堆栈跟踪是:

问题似乎是什么问题?

0 投票
3 回答
4487 浏览

concurrency - 如何在确保每个实体 FIFO 的同时并行处理消息?

假设您的系统中有一个实体,例如“Person”,并且您想要处理修改各种 Person 实体的事件。重要的是:

  • 同一个 Person 的事件按 FIFO 顺序处理
  • 多个 Person 事件流由不同的线程/进程并行处理

我们有一个使用共享数据库和锁来解决这个问题的实现。线程竞争获取一个 Person 的锁,然后在获取锁后按顺序处理事件。我们想移动到消息队列以避免轮询和锁定,我们认为这会减少数据库的负载并简化消费者代码的实现。

我已经对 ActiveMQ、RabbitMQ 和 HornetQ 进行了一些研究,但我没有看到明显的实现方法。

ActiveMQ 支持消费者订阅通配符,但我没有看到将每个队列上的并发限制为 1 的方法。如果我能做到这一点,那么解决方案将很简单:

  • 不知何故,告诉代理允许所有以 /queue/person 开头的队列的并发性为 1。
  • 发布者使用队列名称中的人员 ID 将事件写入队列。例如:/queue/person.20
  • 消费者使用通配符订阅队列:/queue/person。>
  • 每个消费者将收到不同人员队列的消息。如果所有人员队列都在使用中,一些消费者可能会闲置,这没关系
  • 处理完一条消息后,消费者发送一个 ACK​​,它告诉代理它已经处理完该消息,并允许将该 Person 队列的另一条消息发送给另一个消费者(可能是同一个)

ActiveMQ 接近了:您可以进行通配符订阅并启用“独占消费者”,但这种组合会导致单个消费者接收发送到所有匹配队列的所有消息,从而将所有人员的并发性降低到 1。我觉得我错过了一些明显的东西。

问题:

  • 有没有办法通过任何主要的消息队列实现来实现上述方法?我们对选择持相当开放的态度。唯一的要求是它在 Linux 上运行。
  • 有没有不同的方法来解决我没有考虑的一般问题?

谢谢!

0 投票
4 回答
19724 浏览

java - 如何使用 JMS 队列将消息发送到特定接收器

是否可以使用 JMS Queue(HornetQ) 向特定接收者发送消息?

在这么多的接收器中,我希望在 Linux 操作系统上运行的接收器能够接收到某些消息。

每一个建议都是appriciated。

谢谢。

0 投票
1 回答
3228 浏览

jakarta-ee - 如何控制或管理 JMS Queue?例如。更改队列中的消息顺序,删除消息等

我在 Linux 操作系统中使用带有 JBoss6 的 HornetQ,谁能告诉我我们如何控制 JMS 队列来删除消息或更改消息的顺序,与队列连接的 MessageConsumers 的详细信息?

哪种方法最适合这种要求?任何建议表示赞赏。

谢谢。

0 投票
1 回答
511 浏览

jakarta-ee - 如何获取 JMS Queue 的 MessageReceivers 的详细信息(HornetQ 部署在 JBoss AS6 中)?

我需要获取连接到 JMS 队列的消息接收器的详细信息,我正在使用部署在 JBoss AS6 中的 HornetQ。

JMX/JMS 中是否已经定义了这样的操作/API?还有其他方法可以获取 MessageReceivers 的详细信息吗?我需要知道 MessageReceiver 的数量及其 IP 地址。

任何建议表示赞赏。

谢谢。

0 投票
1 回答
657 浏览

jms - 使用过滤器来控制 HornetQ 集群中的消息传递?

由于业务需求,我正在使用 JMS 消息传递设置,其中:

  • 队列必须由应用程序容器定义。
  • 队列必须能够存在于集群中,并且能够平衡负载。
  • 应用程序必须允许客户端指定可以从该队列接收消息的集群节点子集。

目前每个节点都有相同的 hornetq 配置,并且每个节点都使用默认的广播设置进行通信。

阅读文档后,我想到我可以在消息上设置一个包含合法集群节点列表的属性,然后按照 'position(${currentNode}, LEGAL_NODES) != 0' 的行做一些事情。到目前为止,我还没有取得太大的成功,主要是由于 hornetq 文档中的文档相当参差不齐。

有没有人解决过这样的问题?你是怎么做到的?

0 投票
2 回答
1203 浏览

java - 是否要求在提交结束时发送 jms 消息?

我有一个奇怪的现象,似乎在数据库提交实际发生之前就发送了 jms 消息。

假设我有一个服务器操作 foo() ,它在完成时向客户端发送一条消息。客户端然后从服务器加载更改的数据。现在看来 jms 消息是在提交实际完成之前发送的,因此客户端仍然获取旧数据,因为它的请求仍然在原始提交结束之前。

整个服务器操作肯定是事务性的,因为如果抛出异常,则不会发送 jms 事件。

jms 规范中是否有任何要求首先必须发生所有数据库提交,然后发送 jms 消息,或者这取决于实现的顺序?

我们正在讨论 jboss 6.0.0.Final 中默认的 hornetq 实现。

更新:

看来我和这些人有同样的问题:http: //techstack.com/forum/websphere/34434-order-commits-xa-transaction.html

更新 2:

另一个有同样问题的用户http://community.jboss.org/message/114459

0 投票
2 回答
2504 浏览

jboss - hornetq 中是否可以有多个客户端消费者?

在我的客户端应用程序中,我创建了几个消费者,但他们不能同时处理队列。始终,只有一个消费者处理队列消息。我不知道为什么。

如何处理具有多个并发消费者的队列?

0 投票
2 回答
8427 浏览

java - 使用核心 api 消费后 HornetQ 消息仍保留在队列中

我是 HornetQ 的新手,所以请多多包涵。让我先告诉你我的要求:

我需要一个消息队列中间件,它可以在具有低延迟和持久性的不同进程之间传递大约 1k 大小的消息(即它应该能够在系统崩溃中幸存)。我将有多个进程写入同一个队列,并且类似地多个进程从同一个队列中读取。

为此,我选择了 HornetQ,因为它在持久性消息传递方面的评分最高。

我目前正在使用Hornetq v2.2.2Final作为独立服务器
我能够使用核心 api (ClientSession)成功创建持久/非持久队列,并成功将消息发布到队列(ClientProducer)
同样,我可以使用 core api (ClientConsumer)从队列中读取消息。

之后问题就来了,当客户端读取消息时,消息仍然保留在队列中,即队列中的消息数量保持不变。也许我弄错了,但我的印象是,一旦消息被消费 (read + ack),它就会从队列中删除。但这在我的情况下没有发生,并且一遍又一遍地读取相同的消息再次。

另外,我想告诉大家,我已经尝试过将非持久队列与非持久消息一起使用。但问题依然存在

我正在使用的生产者代码:

消费者的代码也是:

HornetQ 服务器配置 ::