spring-jms 相关问题

Spring提供了一个JMS集成框架,它简化了JMS API的使用,就像Spring对JDBC API的集成一样。

让 JmsListenerContainerFactory 中的两个消费者顺序处理消息

我有一个使用以下参数实现 JmsListenerContainerFactory 的类: 工厂.setSessionTransacted(true); 工厂.setConcurrency(“1”); 工厂.setAutoStartup(true); 还有

回答 1 投票 0

JMSCC0111:JMS 的 IBM MQ 类尝试在 Connection 或 JMSContext 上设置预先存在的客户端 ID

即使在属性文件中指定订阅者客户端 ID 后,我仍看到以下错误。我正在使用 Spring Boot 3.3.4 2024-10-28T15:47:30.173-04:00 警告 14156 --- [(2)-10.1.81.174] o....

回答 1 投票 0

com.ibm.mq.MQException:MQJE001:完成代码 2,原因 2009 使用 Sprint Boot 和 JMS (IBM MQ )

我不确定我做错了什么,这个问题非常零星,我有下面的代码在IBM MQ上发送JMS消息。我正在单独使用 spring @async 进行操作,如下所示。 @覆盖 @异步

回答 1 投票 0

从 ActiveMQ Classic 升级到 ActiveMQ Artemis - 类 java.util.ArrayList 不是有效的属性类型

我正在将 ActiveMQ Classic 升级到 ActiveMQ Artemis,同时维护客户端代码。我有多个地方的代码看起来像这样。 导入java.io.IOException; 导入java.util.ArrayList; 导入java...

回答 1 投票 0

ActiveMQ Artemis 和 Spring JmsTemplate 的性能问题

在使用 ActiveMQ Artemis 代理和我的 Spring Boot 应用程序进行一些负载测试时,我遇到了性能问题。 我正在做的是发送例如每秒 12,000 条消息发送至...

回答 1 投票 0

带有 CachingConnectionFactory 和负载均衡器的 JmsTemplate

我正在使用 Spring 的 JmsTemplate、CachingConnectionFactory 和 JmsTransactionManager 来提交或回滚向 IBM MQ 发送消息。我有多个 MQ 主机,其顶部有一个负载均衡器

回答 1 投票 0

防止将 CachingConnectionFactory 与 DefaultJmsListenerContainerFactory 一起使用

我正在开发一个全新的项目,其中我需要有监听器来消费来自多个队列的消息(目前不需要生产者)。 从头开始,我用的是最后一个

回答 2 投票 0

在DefaultMessageListenerContainer中配置sessionAcknowledgeMode

我有一个设置,我必须从 ActiveMQ 代理中的队列中读取消息。读取消息后,我必须对该消息执行长时间运行的操作。 由于这个长时间运行的操作...

回答 3 投票 0

Sonic MQ 12.0 无法与 Spring Boot 3.3.1 版本连接

在最新版本的 Spring Boot 3.3.1 中使用 TopicConnectionFactory 创建 ConnectionFactory 时,progress.message.jclient 预计会遇到像 jakarta package 这样的问题。

回答 1 投票 0

我正在尝试在成功处理后手动确认消息

我目前使用的是 Spring Boot 版本 3.3.0 和 Java 21。 我在将 SessionAcknowledgeMode 设置为 Session.CLIENT_ACKNOWLEDGE 时遇到问题。我正在尝试手动确认消息...

回答 1 投票 0

缓存的 JMS Session 对象在 JmsTemplate 中打印为 null

我们的应用程序是一个在 Tomcat 内运行的 JAVA 后端应用程序。在较高级别上,它从 IBM MQ 读取输入,对其进行处理,将其保留在 ORACLE DB 中并将输出写入 MQ。这是一个分发...

回答 1 投票 0

Spring JMS 错误发送带有千分尺跟踪行李字段“X-Correlation-Id”的消息

我正在尝试使用 Spring JmsTemplate 发送 JMS 消息,如下所示。 jmsTemplate.convertAndSend(topicName, WebsocketMessage("")) 而且,我正在使用

回答 1 投票 0

大量带有选择器 JMSCorrelationID='CamelDummyJmsMessageSelector' 的异步消息使用者

我正在使用 apache Camel 使用 spring-jms 和 ibm-mq 配置 jms 请求/回复模式。 我的 Camel Route 配置为 InOut 模式,我能够成功地从回复队列中读取消息...

回答 1 投票 0

BackOff 和事务性不适用于消息处理,仅适用于侦听器设置

我有一个接收消息的 IbmMqEndpoint。我想要的是,如果在消息处理过程中发生错误,消息将保留在原始队列中。以下实施完美无缺...

回答 1 投票 0

org.springframework.messaging.converter.MessageConversionException:未找到从实际负载类型“byte[]”到预期负载的转换器

我有一个Spring Boot应用程序,在配置类中使用@EnableJMS,在侦听器类中使用@JMSListener 在配置类中,我创建了一个用于连接工厂的 bean 和一个用于混乱的 bean...

回答 2 投票 0

我可以更改 JMSMessageID 以保证其唯一吗?

我正在使用 JMS 构建 Spring Boot 应用程序。为了解决consumer端的重复消息问题,所有出队的JMSMessageID都会保存在redis中,consumer会ign...

回答 2 投票 0

ActiveMQ - 主题的重新传递策略和死信队列

我正在使用 ActiveMQ Artemis 2.17 和 Spring Boot 2.5.7。 我正在发布有关主题和队列的消息并使用它。一切都是通过 JMS 完成的。 所有队列(任播或多播)都是持久的。我的

回答 1 投票 0

BackOff 和事务性不适用于消息处理,仅适用于侦听器设置

我有一个接收消息的 IbmMqEndpoint。我想要的是,如果在消息处理过程中发生错误,消息将保留在原始队列中。以下实现完美无缺...

回答 1 投票 0

消息驱动通道适配器 - 消息并发处理

问题 我们有一个具有以下消息驱动通道适配器配置的遗留应用程序 问题 我们有一个具有以下消息驱动通道适配器配置的旧应用程序 <jms:message-driven-channel-adapter id="processRequest" destination="requestFromLoader" connection-factory="connectionFactory" max-concurrent-consumers="30" message-converter="xmlMarshalConverter" channel="jmsInChannel" error-channel="errorChannel"/> 使用此配置max-concurrent-consumers =“30”我们预计有30个并行消费者(processRequest-container-1到30)来消费消息,但在测试过程中我们发现每个消费者依次消费10条消息,Eg - processRequest-container-1 处理消息 1 到 10,然后创建 processRequest-container-2 并处理 11 到 20 等等.. 如果只有 2 个请求,这会导致第二条消息等待,即使还有 29 个其他消费者。 分辨率 我们添加了 max-messages-per-task="1",这似乎产生了正确的结果,但我们仍在使用大量消息进行测试。 <jms:message-driven-channel-adapter id="processRequest" destination="requestFromLoader" connection-factory="connectionFactory" max-concurrent-consumers="30" max-messages-per-task="1" message-converter="xmlMarshalConverter" channel="jmsInChannel" error-channel="errorChannel"/> 问题 我们通知日志中的消费者名称(processRequest-container-1)将达到2000或3000(processRequest-container-2546),并且不限于processRequest-container-1到processRequest-container-30,但在第一种情况下,没有 max-messages-per-task="1" 它没有超出 processRequest-container-30,这正常吗?或者我们需要做些什么吗? 在spring文档中max-messages-per-task =“1”被定义为每条消息要执行的任务,什么是任务以及最大并行消费者如何受此影响? 添加 max-messages-per-task="1" 正确还是我们遗漏/忽略了其他内容? 任何建议或评论都很好。预先感谢。 这个问题更多的是关于 Spring JMS,而不是 Spring Integration。 最好阅读用于上述 DefaultMessageListenerContainer 的 <jms:message-driven-channel-adapter> 的源代码和 Javadoc。 有一条有趣的评论可能可以解释您的行为: /** * Specify the maximum number of concurrent consumers to create. Default is 1. * <p>If this setting is higher than "concurrentConsumers", the listener container * will dynamically schedule surplus consumers at runtime, provided that enough * incoming messages are encountered. Once the load goes down again, the number of * consumers will be reduced to the standard level ("concurrentConsumers") again. * <p>Raising the number of concurrent consumers is recommendable in order * to scale the consumption of messages coming in from a queue. However, * note that any ordering guarantees are lost once multiple consumers are * registered. In general, stick with 1 consumer for low-volume queues. * <p><b>Do not raise the number of concurrent consumers for a topic, * unless vendor-specific setup measures clearly allow for it.</b> * With regular setup, this would lead to concurrent consumption * of the same message, which is hardly ever desirable. * <p><b>This setting can be modified at runtime, for example through JMX.</b> * @see #setConcurrentConsumers */ public void setMaxConcurrentConsumers(int maxConcurrentConsumers) { 因此,由于您不使用 concurrent-consumers="30" 来代替,因此您获得最多 30 个动态实例,并且它们的 id 确实增加了,这是正常的。 如果不指定max-messages-per-task="1",逻辑是这样的: if (this.taskExecutor instanceof SchedulingTaskExecutor ste && ste.prefersShortLivedTasks()) { if (this.maxMessagesPerTask == Integer.MIN_VALUE) { // TaskExecutor indicated a preference for short-lived tasks. According to // setMaxMessagesPerTask javadoc, we'll use 10 message per task in this case // unless the user specified a custom value. this.maxMessagesPerTask = 10; } } 或者你的taskExecutor不是那个SchedulingTaskExecutor(这确实是默认情况下),因此你的所有消息都由同一个消费者实例处理。 一些文档也在这里:https://docs.spring.io/spring-framework/reference/integration/jms/using.html#jms-mdp

回答 1 投票 0

Spring Boot JmsTemplate 未考虑消息中的replyTo

我根据以下代码调用jmsTemplate @覆盖 公共字符串sendAndReceive(字符串有效负载){ 字符串 retVal = ""; 尝试 { 最后的混乱...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.