Tag: jms

为什么选择JMS进行异步解决方案? 为什么它比简单的实体bean更好?

在我参与的大多数项目中,异步解决方案的选择一直是很多讨论的来源…… 每次单个实体bean足以管理队列时:我们只是在表中存储消息(票证),处理cron将队列取消堆栈。 这个简单的解决方案具有非常简单的优点,它基于数据库的事务上下文,我们可以在执行期间管理接收消息的状态。 因此,我提出以下问题: 1)我们对使用JMS有什么兴趣? JMS有哪些好处? 2)在哪种情况下更喜欢JMS与实体bean? 感谢您的回复和反馈!

轻量级JMS代理

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

ACTIVEMQ-发布者订阅者hello world示例

有两个程序:订阅者和发布者…订阅者能够将消息放到主题上并成功发送消息。 当我在浏览器上检查activemq服务器时,它显示1 msg排队。 但是当我运行消费者代码时,它没有收到消息 这是生产者代码: import javax.jms.*; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; public class producer { private static String url = ActiveMQConnection.DEFAULT_BROKER_URL; public static void main(String[] args) throws JMSException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url); Connection connection = connectionFactory.createConnection(); connection.start(); // JMS messages are sent and received using a Session. We will // create here a […]

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

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

配置MDB以侦听多个队列

我正在使用EJB 3.1,我想配置一个MDB来监听多个队列。 我更喜欢通过XML定义队列名称,而通过注释定义其他定义。 可以这样做吗?

如何暂时禁用消息侦听器

什么是暂时禁用消息监听器的好方法? 我想解决的问题是: 消息侦听器接收JMS消息 尝试处理邮件时出错。 我等待我的系统再次准备好能够处理消息。 在我的系统准备好之前,我不再需要任何消息了,所以… …我想禁用消息监听器。 我的系统已准备好再次处理。 处理失败的消息,并确认JMS消息。 再次启用消息侦听器。 现在,我正在使用Sun App Server。 我通过在MessageConsumer中将它设置为null来禁用消息侦听器,并使用setMessageListener(myOldMessageListener)再次启用它,但在此之后我不再收到任何消息。

如何使用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 … […]

具有多个使用者的JMS队列

我有一个带HornetQ的JBoss-6服务器和一个队列: 有一个不同的消费者(在不同的机器上)连接到此队列,但一次只有一个消费者处于活动状态。 如果我关闭此消费者,消息将立即由其他消费者处理。 由于我的消息有一些耗时的处理,我希望多个消费者同时处理它们的唯一消息。 我记得在早期版本的JBoss中有类似的地方,这个设置没有问题。 在Jboss-6中,消息传递系统运行良好 – 除了上述问题。 这个问题与hornetq中的多个客户端消费者类似吗? ,但情景与我的情况不同。 更新1 :如果我关闭(STRG + C)一个消费者,则短暂超时(直到服务器识别丢失的消费者),直到下一个消费者获得消息。 更新2 :代码段 VoidListener ml = new VoidListener(); QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup(“ConnectionFactory”); QueueConnection conn = qcf.createQueueConnection(); Queue queue = (Queue) ctx.lookup(queueName); QueueSession session = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); QueueReceiver recv = session.createReceiver(queue,””); recv.setMessageListener(ml); conn.start(); 和MessageListerner: public class OlVoidListener implements MessageListener { public void […]

根据“尽力而为1PC”模式实现Spring ChainedTransactionManager

最好的努力1PC在这篇文章中很好地描述。 为SpringSource工作的作者David Syer提供了一个扩展Spring AbstractPlatformTransactionManager类的ChainedTransactionManager实现。 此特定事务管理器可以启动n个事务,例如JDBC或JMS会话,并使用AbstractPlatformTransactionManager n个实例执行提交/回滚,每个资源一个。 这在XA驱动程序不可用的情况下非常有用。 由于post很老,代码在Spring 2.5中运行良好,但在Spring 3+中失败了。 在Spring 3+中有一个实现类似function的请求票 。 我愿意尝试一下,但我想我先问:那里有没有实现? 谢谢