我知道JMS没有统计规范,所以没有标准的方式来读取诸如“处理的消息数”、“队列中的平均时间”等内容。
我在考虑两种方法:
对于(1),我没有找到如何使用Spring Boot获取thos统计数据的示例。对于(2),我想知道消费者本身是否需要维护统计数据,或者是否有更好的方法。
有没有人有任何有效的例子?
如果您将JMS与Spring集成在一起,那么它的系统管理功能将提供统计信息,这些统计信息在Spring boot应用程序中注册为千分尺指标。
https://docs.spring.io/spring-integration/docs/5.1.7.RELEASE/reference/html/#system-管理章节
https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/boot-features-integration.html
https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/production-ready-metrics.html
作为记录,我最终实现了一个特定于代理的解决方案(这里是ActiveMQ)
import org.springframework.stereotype.Component
import javax.jms.*
typealias QueueName = String
@Component
class BrokerFacade(private val connectionFactory: ConnectionFactory) {
private val statisticsBrokers = mutableMapOf<QueueName, StatisticsBrokerAccess>()
@Throws(JMSException::class)
fun getStatistics(queueName: QueueName): QueueStatistics? {
val brokerAccess = statisticsBrokers.getOrPut(queueName, { StatisticsBrokerAccess(queueName) })
return brokerAccess.getCurrentStatistics()?.let {
QueueStatistics(
queueName,
it.getLong("size"),
it.getLong("dequeueCount"),
it.getDouble("minEnqueueTime"),
it.getDouble("maxEnqueueTime"),
it.getDouble("averageEnqueueTime"),
it.getLong("memoryUsage"),
it.getLong("memoryPercentUsage")
)
}
}
inner class StatisticsBrokerAccess(queueName: QueueName) {
private val statisticsMessageConsumer: MessageConsumer;
private val statisticsMessageProducer: MessageProducer;
private val statisticsMessage: Message;
init {
val connection = connectionFactory.createConnection()
connection.start()
val session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE)
val statisticsReplyQueue = session.createTemporaryQueue()
statisticsMessageConsumer = session.createConsumer(statisticsReplyQueue)
val statisticsQueue = session.createQueue("ActiveMQ.Statistics.Destination.$queueName")
statisticsMessageProducer = session.createProducer(statisticsQueue)
statisticsMessage = session.createMessage()
statisticsMessage.setJMSReplyTo(statisticsReplyQueue)
}
fun getCurrentStatistics(): MapMessage? {
statisticsMessageProducer.send(statisticsMessage)
return statisticsMessageConsumer.receive(2000) as MapMessage?
}
}
}
队列统计是一个保存统计值的数据类。
问题内容: 我正在使用Spring 3.1.1.RELEASE,JUnit 4.8.1和Hibernate 4.1.5.Final。我正在尝试测试二级缓存是否配置正确,但是不确定如何做。我正在使用像这样在Spring中配置的JPA实体管理器… 我已经像这样配置了二级缓存… 给定javax.persistence.EntityManager,如何访问org.hibernate.stat.Statis
访问统计 功能介绍:线状图统计访问店铺记录,直观查看店铺经营情况。 步骤 【用户管理】→【访问统计】。
我找到以下链接来读取JMS队列中的消息及其工作。 https://blogs.oracle.com/soaproactive/entry/jms_step_3_using_the 现在,我想以编程方式读取JMS队列统计信息,如消息数、挂起消息数和消息输入/输出时间等。weblogic或weblogic中是否有可能为此提供任何API? 请帮忙。
我正在开发一个文件存储应用程序,需要读取 sd 存储和内部手机存储的内容。我已经签出了 react-native-fs 和 react-native-fetch-blob,但这两个应用程序都只允许我访问我的应用程序的存储。如何读取手机上的其他文件?
我想做一个关于资源利用的统计!我知道有了'ResourcePool.Utility()'我就能做到!但问题是,资源工作,按时间表,为8小时..但统计是结束了一整天!有没有办法只在他们的工作时间内调查利用情况? 谢谢u Miriana
从MySQL 8开始,标志默认启用。 因此,如果您尝试使用MySQL Workbase 8.0.12转储一些表,您会收到以下错误消息: 14:50:22 Dumping db (table_name) Running: mysqldump.exe --defaults-file="c:\users\username\appdata\local\temp\tmpvu0mxn.cnf" --user=