Tag: 消息传递

Java:高性能消息传递(单生产者/单一消费者)

我最初在这里问过这个问题,但我意识到我的问题不是关于一个真正的循环。 我想知道的是,在Java中进行高性能异步消息传递的正确方法是什么? 我想做什么…… 我有大约10,000名消费者,每个消费者都从他们的私人队列中消费消息。 我有一个线程一个接一个地生成消息并将它们放在正确的消费者队列中。 每个使用者无限循环,检查消息是否出现在队列中并进行处理。 我认为这个术语是“单一生产者/单一消费者”,因为有一个生产者,每个消费者只能在他们的私人队列上工作(多个消费者永远不会从同一个队列中读取)。 在Consumer.java里面: @Override public void run() { while (true) { Message msg = messageQueue.poll(); if (msg != null) { … // do something with the message } } } Producer正在快速地将消息放入消费者消息队列中(每秒数百万条消息)。 消费者应该尽快处理这些消息! 注意: while (true) { … }由Producer作为最后一条消息发送的KILL消息终止。 但是,我的问题是关于设计此消息传递的正确方法。 我应该为messageQueue使用什么样的队列? 应该是同步还是异步? 如何设计消息? 我应该使用while-true循环吗? 消费者应该是一个线程,还是其他什么? 10,000个线程会慢慢爬行吗? 什么是线程的替代品? 那么, 在Java中进行高性能消息传递的正确方法是什么?

MessageMistener和JMS中的Consumer之间有什么区别?

我是JMS新手。 据我所知, Consumers能够从队列/主题中选择消息。 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息? 这样一个MessageListener的实际用途是什么? 编辑:从MessageListener的Javadoc : MessageListener对象用于接收异步传递的消息。 每个会话必须确保它将消息串行传递给侦听器。 这意味着分配给同一会话的一个或多个使用者的侦听器可以假定在会话完成最后一次调用之前,不会使用下一条消息调用onMessage方法。 所以我对这些术语的异步和串行使用感到困惑。 这两个术语在描述MessageListener的function时如何相关?

JMS AUTO_ACKNOWLEDGE何时被确认?

我试图谷歌这个,但没有成功。 如果我正在使用AUTO_ACKNOWLEDGE ,并且我有一个用Java编写的消费者客户端,那么消息何时被确认? 我正在使用一个包含onMessage方法的MessageListener 。 是否在onMessage之前或onMessage完成之后或在某个其他时刻将确认发送回服务器? 提前感谢任何人都能提供的帮助!

轻量级JMS代理

我正在寻找一个小而高效的轻量级JMS代理解决方案,没有或只有最少的依赖。 我的消息传递代码应该在我无法控制的很多依赖项的环境中运行。 因此,部署说ActiveMQ解决方案以及我自定义的一堆类将是荒谬的。

JMS – 从一个消费者到多个消费者

我有一个JMS客户端,它生成消息并通过JMS队列发送给它的唯一消费者。 我想要的是不止一个消费者获得这些消息。 我想到的第一件事就是将队列转换为主题,因此当前和新的消费者可以订阅并获得传递给所有消息的相同消息。 这显然涉及在生产者和消费者方面修改当前客户端代码。 我还想看看其他选项,比如创建第二个队列,这样我就不必修改现有的消费者了。 我相信这种方法有一些优点(如果我错了,请纠正我)平衡两个不同队列之间的负载而不是一个,这可能会对性能产生积极影响。 我想就你可能会看到的这些选项和缺点/专业人士提出建议。 任何反馈都非常感谢。

如何使用java和spring 3.0从JMS主题(而不是队列)同时处理多个消息?

请注意,我希望多个消息侦听器同时处理来自主题的连续消息。 此外,我希望每个消息监听器都以事务方式运行,以便给定消息监听器中的处理失败将导致该监听器的消息保留在该主题上。 Spring DefaultMessageListenerContainer似乎只支持JMS队列的并发性。 我是否需要实例化多个DefaultMessageListenerContainers? 如果时间沿垂直轴向下流动: ListenerA reads msg 1 ListenerB reads msg 2 ListenerC reads msg 3 ListenerA reads msg 4 ListenerB reads msg 5 ListenerC reads msg 6 ListenerA reads msg 7 ListenerB reads msg 8 ListenerC reads msg 9 ListenerA reads msg 10 ListenerB reads msg 11 ListenerC reads msg 12 … […]