问题标签 [spring-jms]

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

spring - 使用 Spring-JMS DefaultMessageListenerContainer cacheLevelName CACHE_NONE 连接失败

我将 Spring-JMS DefaultMessageListenerContainer 实现更改为使用 CACHE_NONE 的 cacheLevelName 并遇到以下异常。此处概述了这些更改。我正在使用 glassfish v 2.1、Open MQ 4.4 和 Spring 3.*。关于我可能出错的地方有什么想法吗?

网络应用日志:

[#|2012-05-16T21:18:12.620+0000|SEVERE|sun-appserver9.1|javax.resourceadapter.mqjmsra.outbound.connection|_ThreadID=284;_ThreadName=updateJmsContainer-90;_RequestID=3aa71c9e-3ac0-4142 -b914-ffbdc6e6bb37;|MQJMSRA_MC4001:构造函数:Aborting:JMSException on createConnection=[C4000]:数据包确认失败。用户=管理员,经纪人=本地主机:45088(55601)|#]

2012-05-16 21:18:17,636 [updateJmsContainer-90] 警告 org.springframework.jms.listener.DefaultMessageListenerContainer - 目标“TestQ”的 JMS 消息侦听器调用程序设置失败 - 试图恢复。原因:MQRA:CFA:allocation failure:createConnection:Error in allocating an connection。原因:MQJMSRA_MC4001:constructor:Aborting:JMSException on createConnection=[C4000]:数据包确认失败。用户=管理员,经纪人=本地主机:45088(55601)

经纪人日志文件:

0 投票
2 回答
1437 浏览

spring - Spring JavaMailSender:使其异步和持久化

是否有一种简单/轻量级的方法可以将持久性添加到 Spring 的 JavaMailSender 并让它异步运行?Spring 是否为此提供任何“内置”支持?我目前正在使用 JMS 查看队列,但对于手头的任务(查看 ActiveMQ 和 RabbitMQ)来说,它们似乎有点矫枉过正。是否有轻量级 JMS 选项?

0 投票
1 回答
872 浏览

ibm-mq - MQ 选择性出队速度有时很糟糕

我有一个进程用于JMSTemplate根据 JMS 标头值选择性地从 MQ 队列中出列。

当 dequeue 查询匹配队列前面的消息时,dequeue 速率大约为 60-70 msg/秒。但是,当查询仅匹配深度为 50、100 或 200 条消息的消息时,出队率下降到 1 msg / 3-4 秒。

快速出队查询是ThreadId='24' or ThreadId='PRIMARY'. 慢出队查询是ThreadId='24'.

处理时间缓慢的真正原因可能是其他原因,但我观察到处理时间的变化只不过是取消选择查询的变化。

我怀疑这种处理速度并不常见。可能出了什么问题?

0 投票
2 回答
1165 浏览

spring - 使用 DefaultMessageListenerContainer 从主题中丢失消息

我正在使用 DefaultMessageListenerContainer 来使用来自主题的消息(代理是 ActiveMQ)。因为消费者是在运行时创建的,所以我正在执行以下操作:

1)我在春天配置了一个 Conainer 模板

2)当需要一个新的消费者时,我从应用程序上下文中获得一个新的消费者并重新配置destinationName。

不幸的是,该容器错过了有关该主题的一些消息。有人知道我在做什么错吗?

0 投票
2 回答
18362 浏览

java - 数千个主题的高性能 DefaultMessageListenerContainer 配置

对于我当前的项目,我需要使用来自许多目的地(从数百到 20 或 30k)的消息,所有目的地都是主题。目前(对于初始负载测试)所有消息都是在同一台服务器上本地创建的,在线程池中。

我当前的 spring 配置在代理网络(用于集群)和 DefaultMessageListenerContainers (DMLCs) 中使用嵌入式 activemq,并带有一个通用的 TaskExecutor。虽然目的地的数量非常多,但每个目的地的吞吐量相对较低。

我唯一的要求是尽快消费所有消息。

我的配置:

我的代码使用应用程序上下文作为 DMLC-Factory 并设置容器的最终配置:

虽然我们在此配置中不会丢失消息,但单个消息的转换时间可能会很长。

Q1:有没有更有效的方式来收听大量目的地?

Q2:我的监听器配置有可能改进吗?

Q3:除了 DMLC,我还尝试了 SimpleMessageListenerContainer,但我无法让它工作。我的配置有问题吗?

0 投票
2 回答
1659 浏览

jndi - 来自 WAS 8 的 Spring JMS 客户端访问 WMQ 抛出DetailedInvalidDestinationException

我有一个 Web 应用程序部署在 Websphere AS 8.0(主机 A)中,使用 spring-jms 客户端访问远程机器(主机 B)中 WMQ 7.0 中的队列。我已经按照 WAS 8 管理指南中的说明,使用资源链接下的 JMS Provider 在 JNDI 中配置了 WMQ ConnectionFactory 和 WMQ 队列,并将 WMQ 作为消息传递提供者。我还使用测试连接按钮对其进行了测试。它工作正常。我已经按照 Spring JMS 配置配置了 JNDI 模板和 QueueConnectionFactory 和 Queue(Destination)、DestinationResolver 和 JMSTemplate。

但是,当我尝试运行我的服务器并通过 JNDI 访问 WMQ 时,它会引发以下异常:

我尝试打印我的默认目标名称,它打印为 queue://QM_MGR/Q1,其中 QM_MGR 是队列管理器的名称,Q1 是 WMQ 中的队列名称。

请注意,我没有在 WMQ 中配置任何 JNDI,在 JNDI 模板中没有配置任何 InitialContextFactory 和 Provider URL,在 web.xml 中没有配置资源引用。

我已经尝试了以上所有方法并失败了。所以我删除了上面提到的配置。

任何人都可以通过指出我为什么会遇到此异常,我缺少什么或详细说明避免此异常的步骤来帮助我吗?提前致谢。

0 投票
0 回答
613 浏览

spring - Spring MDP 线程安全资源池

正在从 EJB2.0 进行 Spring 迁移。在现有的 MessageListener 中,我们缓存了一些重量级的对象,因为它在初始阶段使用反射和复杂的操作,例如 JAXB 对象。例如,我们有 100 个作为侦听器的最大大小,因为 EJB 侦听器创建了 100 个对象,我们没有线程安全问题。当我尝试使用 Spring 2.5 时,MDP 使用单个侦听器对象进行多线程处理,因此我们遇到了侦听器类级别对象的问题,我们无法提供线程对象。我正在使用 Spring.aop.target.CommonsPoolTargetSource 和 proxyFactoryBean 来池化重量级实例,但该实例不是线程安全的,它可能会破坏预期。我试图找出这个问题的解决方案,我得到了一些信息,因为我们可以使用类和使用 process() 而我们没有 不想实现监听器类,但我们需要使用 jmscontainer 进行配置,但我们的团队想要一个标准的方法来做到这一点。因为项目可能会增长,它需要遵循框架模式,需要一些标准。

请帮助我在实现 MessageListener 和 onMessage 作为获取消息的方法的类中解决这个线程安全的资源池。但我们需要线程安全资源。过去一天我一直在研究这个问题,但无法弄清楚这个问题。

提前感谢您提出解决此问题的标准方法。

0 投票
1 回答
462 浏览

spring - 在应用程序中设置 JMS 队列连接以使用 Apache Camel 连接到它

我已经提供了客户端的队列连接详细信息以使用 Camel 连接到它。在 applicationContext.xml 中设置它时,我陷入了困境。
客户端提供了 jndiNames 和队列名称来连接到这些队列。有点像

在 POC 期间,我刚刚提供了本地队列名称以使用 Camel 连接到它。但是在这里我很困惑如何在骆驼配置中同时使用 jndiNames 和 queueNames。

0 投票
2 回答
16327 浏览

spring - 如何在 Spring 的 applicationContext 中设置 JMS 配置?

如何为下面给出的 java 代码设置应用程序?

我在这里和那里看到了很多例子,但没有一个给出完整的画面。

0 投票
0 回答
1096 浏览

java - Spring 配置的 JMS Listener Idle 超时

我有一个配置了 Spring 的 JMS 侦听器,如果消息在几个小时内没有收到(如果它空闲而没有收到任何消息),之后它将不会选择任何消息。有人可以解释一下这里可能是什么问题。

非常感谢。