问题标签 [solace-mq]

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

apache-camel - 为什么在 Camel 3 升级后重启时 Solace 消息会挂在服务器上?

在升级到 Camel 3.3 时,我们在测试时遇到了一个问题。因此,如果我们在队列中有多条消息由于某种原因重新启动我们的骆驼应用程序时,一些消息会卡在安慰队列上的“未确认”状态,并且在应用程序恢复后它不会消耗这些消息。我们需要在它们被消耗之前再次重新启动应用程序。

  1. 此问题似乎仅在重新启动时队列中有大量消息时才会出现。
  2. 我们无法在 Camel 2.x 版本上重现该问题。
  3. 应用程序已正确设置为 AUTO_ACKNOWLEDGE,并且在所有其他情况下都可以正常工作。
  4. “acceptMessagesWhileStopping”设置为假。
  5. 我们没有看到任何消息丢失或重复。

我们完成了启动时发生的所有设置和配置,我们没有发现设置或配置有任何问题。我不确定如何进行调试,因为这是一个与关闭相关的问题,同时消息也在消耗过程中。任何有关如何前进的建议都会有所帮助。问候。

PS 我已经阅读了 Camel 3 迁移指南。我在那里没有找到与该问题相关的任何内容。

0 投票
1 回答
81 浏览

java - 如何在我的 Solace Consumer 应用程序中减慢消费速度

我有一个基于 Spring Boot 的 Java 应用程序,它使用javax.jms从 Solace 队列(比如说 A )读取消息。然后我的应用程序分别对每条消息应用 10 秒延迟(使用 DelayedQueue)。一旦 10 秒过去了,我将消息推送到另一个 Solace 队列(比如说 B)。一切正常,即使队列 A 中的初始消息较少,我也可以为每条消息设置适当的 10 秒延迟。

但是对我来说挑战是,如果队列 A 中有大量消息(通常发生在我的用例中),并且当我启动应用程序时,它会非常快地提取消息(每秒 10-15K 条消息)。这使我的应用程序内存不足(超出了 GC 开销限制)。

问题:我的问题是如何在我的应用程序中减慢消费速度。我们是否有一种方法可以让我每秒收到大约 2-3K 条消息。我需要在我的代码中做一些配置更改吗?请指教。

以下是我尝试的设置,它没有帮助。即使在此之后,我的应用程序每秒也会提取 12-15K 条消息:

即使我尝试增加堆内存(初始:2GB 和最大:4GB),但它没有帮助。

请帮忙。谢谢!

PS我不能在这里使用 TTL,只能使用我们的应用程序来完成。

0 投票
0 回答
30 浏览

spring-boot - 关于 Solace Consumer 的 Connectivity 状态、Session 状态和 Consumer 状态

我们是几个 Solace 队列的消费者。

我们正在使用来自 (1) 使用 Solace PubSub Plus Source Connector 的 Kafka Connect 框架,(2) 使用 Solace JMS API 定制开发的 Spring Boot 应用程序的消息。

案例 #1:Solace PubSub Plus 源连接器的问题

有时我们发现连接器未列在 Solace 管理门户消费者列表中——这意味着代理以某种方式启动了连接器——因此断开连接。但 Solace 源连接器仍处于 RUNNING 状态。这让我们感到困惑。连接器与 Solace 代理没有连接,但仍处于运行状态 - 这没有任何意义。

有什么方法可以确定源连接器是否与代理松散连接?就像连接器的状态改变 - 连接器失败。

案例 #2:SpringBoot 消费者应用程序的问题

我们还有一些在 SpringBoot 中使用 Solace JMS API 开发的微服务来消费来自代理队列的消息。我们想开发一个功能,以便我们可以检查连接、会话和消息消费者的状态。但默认的 API 只是停止/启动/关闭。没有什么像isConnected/isAlive这样的东西。

有什么方法可以检查连接、会话和 messageConsumer 的状态吗?

0 投票
1 回答
170 浏览

spring-boot - Solace Queue - 消息应在异常情况下自动重新传递,而无需重新连接会话

我们计划使用 Solace Queue Management。用例之一是,在消费者收到消息后,如果在处理消息时出现任何异常,应该自动重新传递消息。

截至目前,我没有向队列发送确认消息,因此消息不会从队列中删除,但不幸的是它无法自动重新传递。如果我重新启动会话,那么只有我能够收到相同的消息。

我已经探索了几个选项。session.rollback 或 session.revoke 异常,但它会增加队列中所有消息的传递计数。此外,没有任何延迟时间配置来重新传递相同的消息。

期望是,相同的消息应该在 30 分钟(配置的延迟)后自动重新传递。

以下是我用于消费者的示例代码:

https://github.com/SolaceSamples/solace-samples-jms/blob/master/src/main/java/com/solace/samples/QueueConsumer.java

感谢您的支持。谢谢

0 投票
0 回答
96 浏览

spring-jms - 为什么安慰连接被拒绝,并在重启后恢复

我有一个应用程序将使用 spring jms 连接到 solace,并在昨天维护 solace 服务器,之后我的应用程序总是说Connecting to host 'orig=tcp://xxx, scheme=tcp://, host=xxx' (host 1 of 1, smfclient 190521, attempt 1 of 1, this_host_attempt: 1 of 1) Connection attempt failed to host 'xxx' ConnectException com.solacesystems.jcsmp.JCSMPTransportException: (Client name: ceaaa391610d/1/#11ba492e839/CfXgqoqM62 Local port: -1 Remote addr: xxx Remote port: 55555) - Error communicating with the router. cause: java.net.ConnectException: Connection refused ((Client name: ceaaa391610d/1/#11ba492e839/CfXgqoqM62 Local port: -1 Remote addr: xxx Remote port: 55555) - )

我检查了应用程序日志,上面的日志将每 8 秒出现一次,但似乎我没有在我的应用程序中设置任何超时值。

基于javax.jms.ConnectionFactory和的 Solace 连接org.springframework.jms.connection.CachingConnectionFactory,用于JmsTemplate发送消息。

你知道为什么它在重新启动后工作,还有那里的客户名称信息的任何想法?

将感谢任何帮助!

0 投票
0 回答
76 浏览

activemq - removing particular messages from an ActiveMQ queue by consuming with a selector fails to remove all that should match the selector

I have written a C# utility to consume/delete certain messages in an activeMq queue. This utility fails to remove all of the messages which match the selector. Is there a problem with ActiveMQ, or (more likely) I am doing something incorrectly? A similar utility running on Solace does not manifest the same issue.

The message producer adds an identifying property to the msg; the utility will consume messages where the property has a certain value by using a selector. The messages being deleted are those for application entities that users have decided to cancel.

When the number of messages in the queue is small, e.g. 100, the queue draining utility works as planned. When the number of messages is large, e.g. 10000, the utility will remove/drain the first 50ish of those messages that should be removed, leaving a large number that should have been drained but have not been.

The two code samples below are taken from linqpad scripts that demonstrate the issue. The first creates 10000 messages, tagged randomly with one of 10 strings ('aaaaaaaa' to 'jjjjjjjj'). The second code block attempts to remove those messages with tagged with 'aaaaaaaa'. The first block will generate around 1000 'aaaaaaaa' messages, but the second block will only drain around 50.

(I am using ActiveMq version: 5.16.3 on windows, the linqpad scripts reference Apache.NMS.ActiveMQ.NetCore version 1.7.3 running on .Net 5.0)

producer.linq

drainer.linq

0 投票
1 回答
252 浏览

java - spring boot 重新连接慰藉 jms 队列

我正在使用 spring boot 连接到慰藉队列。我使用下面的教程连接到 solace JMS 队列。 https://www.devglan.com/spring-boot/spring-jms-solace-example 它能够连接到慰藉队列。当应用程序启动并且与 solace queue 的连接工作正常时,我们遇到了一个问题,但是在 solace queue 关闭一段时间后,spring boot 应用程序应该重新连接到 solace queue,而不是重新启动应用程序进行连接。要重新连接安慰队列,我添加了

所以代码如下所示

pom.xml

如果慰藉队列连接被中断,它不会进入异常侦听器,并且通过添加重新连接属性,它也不会在日志中显示应用程序是否正在重新连接到慰藉队列。如果安慰队列在一段时间后启动,如何重新连接到安慰队列

请帮助

0 投票
1 回答
50 浏览

amqp - 从 Solace JCSMP 发送的消息可以在用其他语言编写的服务中使用吗

究竟什么是 Solace JCSMP?

它只是更适合 Solace 的 JMS API 吗?它还有哪些其他好处?

例如,我需要使用 SolaceMQ 创建一个 Java 应用程序,该应用程序需要通过 AMQP 协议发送/接收消息,以便所有用不同语言编写的不同微服务都能够使用它们。JCSMP 适合吗?还是它只是另一个只在 Java 应用程序之间工作的 JMS API?