问题标签 [jmstemplate]

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

java - 如何将并发配置到单个队列

我想在 jms 模板中为单个队列配置消费者数量。我试图实现这个:JmsTemplate - 为每个队列定义并发?但在 ActiveMQQueue 中仍然显示 1. 我的消息传递上下文:

另一个相关问题:“listener”与“messageListener”属性之间有区别吗?

0 投票
2 回答
1678 浏览

java - Spring JmsTemplate 的守护线程在停止 tomcat 应用程序后保持活动状态

我正在使用我的 Web 应用程序中的 Spring JmsTemplate 类向 IBM WebSphere MQ(mq jar 版本为 7.0.1.9,javax.jms 为 1.1)发送消息。

我使用的 connectionFactory 是 MQQueueConnectionFactory。

以下守护线程是在 JmsTempalte 上执行 send() 和实例化 MQQueueConnectionFactory 时创建的。

问题

当我在 tomcat 管理页面中停止 Web 应用程序时,我在 tomcat 命令行上收到一条消息,将这三个线程显示为内存泄漏。守护线程是

来自 JCONSOLE

线程 1

名称:JMSCCThreadPoolMaster 状态:在 java.lang.Object@9f6e3e9 上等待总阻塞:3 总等待:4

堆栈跟踪:java.lang.Object.wait(Native Method) java.lang.Object.wait(Object.java:485) com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$WorkQueueManagerThread.waitForNotification(WorkQueueManagerImplementation. java:651) com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$WorkQueueManagerThread.waitForNotification(WorkQueueManagerImplementation.java:621) com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$WorkQueueManagerThread.run( WorkQueueManagerImplementation.java:887)

线程 2

名称:JMSCCThreadPoolWorker-2 状态:WAITING on com.ibm.mq.jmqi.remote.internal.RemoteReconnectThread$ReconnectMutex@3d3c3e45 阻塞总数:0 等待总数:1

堆栈跟踪:java.lang.Object.wait(Native Method) java.lang.Object.wait(Object.java:485) com.ibm.mq.jmqi.remote.internal.RemoteReconnectThread.bestHconn(RemoteReconnectThread.java:672) com.ibm.mq.jmqi.remote.internal.RemoteReconnectThread.run(RemoteReconnectThread.java:129) com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:209) com.ibm.msg。 client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:100) com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:224) com.ibm.msg.client.commonservices.workqueue。 WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:298) com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1220)

线程 3一分钟后死亡

这个是在实例化 MQQueueConnectionFactory 时创建的

名称:WebSphere MQ 跟踪监视器状态:TIMED_WAITING 阻塞总数:0 等待总数:5

堆栈跟踪:java.lang.Thread.sleep(Native Method) com.ibm.mq.commonservices.internal.monitor.TraceMonitor.run(TraceMonitor.java:134)

如何确保这些守护线程死亡。

0 投票
1 回答
1314 浏览

java - 使用 JmsTemplate 和 CachingConnectionFactory 发送 BlobMessage

我使用 ActiveMQ 作为我的消息代理,并且我有一个 JMS 要求,即发送一个大文档作为输入流以供消费者处理。我遇到的问题是,如果我使用 Spring 的 org.springframework.jms.connection.CachingConnectionFactory 来包装 ActiveMQConnectionFactory,我必须将会话对象(javax.jms.Session)转换为 org.apache.activemq.ActiveMQSession是这里的建议(使用带有 BlobMessage 的 Active MQ 发送文件)。

然后,如果我将通用 Session 对象转换为 ActiveMQSession,则会出现异常,因为 Spring 只为 javax.jms.Session 提供代理,而不是它代理的目标对象(即 org.apache.activemq.ActiveMQSession)。所以我采用的解决方案是只使用普通的 ActiveMQConnectionFactory 而不是使用 CachingConnectionFactory。有没有办法让我保留 CachingConnectionFactory 而无需从下面的示例代码中获取 ClassCastException?

这就是我目前在我的应用程序上下文中拥有的内容,它将防止 ClassCastException 被抛出。另请参阅注释块,其中显示了我拥有的旧配置,它引发了异常:

0 投票
1 回答
311 浏览

spring - 使用事务时的 Spring DLMC 和 JMSTemplate 行为

我对 DMLC 和 JMSTemplate 中的事务有一些疑问。

  1. 如果我们不使用事务,Spring DMLC 是否使用回调异步接收消息?

  2. DMLC 在使用事务处理会话时是否也异步接收消息。(将 sessionTransacted 设置为 true)。将 sessionTransacted 设置为 true 后的行为是什么?

3、从消费者的角度来看AUTO_ACK和SESSION_TRANSACTED模式有什么区别。在 AUTO_ACK 模式下,DMLC 在收到消息后向代理发送确认。同样在 SESSION_TRANSACTED 模式下,DMLC 在收到每条消息后提交。就性能而言,哪种方式更好,有什么区别?

4 JMSTemplate 消息发送是否始终是同步的。即使它正在向主题发送非持久消息?

谢谢, 阿努杰

0 投票
1 回答
1242 浏览

spring - JMSTemplate 向 ActiveMQ 代理发送非持久消息时的“sessionTransacted”行为

在向 ActiveMQ 代理发送非持久消息时,我想了解 spring JMSTemplate 中事务处理会话的行为(同步或异步)。我说的是JMSTemplate配置,其中Session 被处理并且发送的消息是非持久的

根据我的理解:
发送到 ActiveMQ 代理的非持久消息是异步发送的。但是在事务会话上发送的消息是同步的。由于提交调用是同步的,并且 JMSTemplate 在每条消息发送后提交。

上面指定配置的消息发送是同步的还是异步的?请帮助我理解这种行为。

谢谢,

阿努伊

0 投票
1 回答
686 浏览

oracle - Activemq jdbcPersistenceAdapter 将消息刷新到数据库

我有一个配置为使用 Oracle 的 activemq jdbcPersistenceAdapter。主代理获得了锁,但是当我向队列发送消息时,我无法在数据库表中看到它们。我不希望以任何方式缓存消息,因为在没有更多生产者之前它们不会被消耗(长话短说)。

0 投票
3 回答
9383 浏览

spring - 停止 spring jms 消息侦听器

我有一个场景,我需要停止 spring 的 DefaultMessageListenerContainer,然后再启动它。我有 10 个不同的 DefaultMessageListenerContainer 监听 10 个不同的队列。所有 10 个不同的容器都在调用同一消息侦听器类的相同方法。现在我想根据我在 onMessage 方法中得到的异常来停止特定队列的 messagelistenercontainer。请建议我如何实现上述场景。

下面是我的监听器配置

0 投票
1 回答
561 浏览

java - 使用 CachingConnectionFactory 时未清理生产者

似乎JMSProducer在将消息传递到队列后没有收集垃圾并保持活动状态,我正在使用 Spring 3.2.2 并CachingConnectionFactory使用 Keep-alive 设置发送消息。

每次我发送消息时,生产者数量都会不断增加。

它与我使用的春季版本有关吗?
还是我在配置中做错了什么?

0 投票
1 回答
857 浏览

java - Spring:批处理作业完成后消息代理上未删除 JMS 使用者会话/连接

我有一个批处理作业配置为从 JMS 目标读取消息并使用 Chuck Tasklet 写入 XML 文件。JMS 阅读器是自定义实现的,它反过来调用 JMSTemplate 的接收方法。我使用 webMethods Broker 作为 JMS Broker。在批处理运行期间,我们观察到在从代理目的地读取消息时创建的消费者会话在批处理完成时没有被销毁。它们只有在我关闭 JVM 后才会被销毁。我在下面提供了更多详细信息,

JMS Spring XML 配置:

指出实际问题的任何帮助都会很棒。

0 投票
1 回答
1711 浏览

java - 如何在 Spring 类中使用注解注入 JmsTemplate 对象?

我正在尝试使用@Autowired将 JmsTemplate 对象注入到一个类中,但是每当我尝试发送消息时它都会给出NullPointerException 。在应用程序类中,我可以使用ApplicationContext实例化 jmsTemplate

我无法在任何其他类中执行此操作,因为我不知道如何获取上下文对象。

这是我的应用程序类:

这是生产者类:

这是完整的堆栈跟踪:

我在这里想念什么?