使用 Grafana 监控 Solace 队列
Monitor Solace Queues with Grafana
我有几个微服务,它们使用 Solace 队列在它们之间进行通信。我的任务是找到一个解决方案来检查在 thouse 队列中流动的消息,或者基于内容将一些数据推送到 InfluxDB 中,这些数据将由 Grafana 解释。
长话短说,我需要知道是否有任何技术解决方案来获取在队列中传递的每条消息的副本(拦截消息)而不实际使用它。
还要求不修改任何现有服务的代码,因此我的计划是创建一个额外的连接到此队列的名称,这些队列是如何嗅探消息的。
我想知道这在技术上是否可行。
针对您的情况有几种不同的可能解决方案,根据您的具体要求,这些解决方案可能合适也可能不合适。
如果 InfluxDB 侦听器组件可以与您的微服务并行运行,那么完成这项工作的最简单方法是发布微服务发布一个主题,将消费微服务连接到一个队列订阅了同一个主题,并且 InfluxDB 侦听器组件将有自己的队列订阅同一个主题...这允许它接收由发送的每条消息的副本发布微服务(标准 pub/sub 模式)。这是 Solace 的典型最佳实践,即在主题上发布,从队列中消费,并在基础设施中进行主题到队列的映射 configured/controlled ...应用程序(例如添加新的侦听器)而不影响您现有的 code/flows.
如果您不能更改您的发布者代码以发布到主题,那么您仍然可以通过为 InfluxDB 消费者使用第二个队列并将其订阅到第一个队列的 "network topic" 来实现相同的功能,看起来像 #P2P/QUE/queue-name
...您可以在队列的详细信息中看到这个特殊主题。
或者,如果您需要让 InfluxDB 侦听器组件内联到您的微服务应用程序(而不是通过消息副本并行),那么您需要使用一个队列来发布您的第一个微服务进入,然后您的 InfluxDB 侦听器从中消费...然后它进行内容路由/决策制定,然后将消息发布回第二个队列,第二个微服务可以从中消费。这实质上使 InfluxDB 侦听器只是微服务之间处理链中的另一个微服务。
请注意,对于前两个选项(将消息副本放在两个队列中),Solace 仅在磁盘上保留一个消息副本并维护引用计数。因此磁盘使用不受 "fan-out".
的影响
我有几个微服务,它们使用 Solace 队列在它们之间进行通信。我的任务是找到一个解决方案来检查在 thouse 队列中流动的消息,或者基于内容将一些数据推送到 InfluxDB 中,这些数据将由 Grafana 解释。
长话短说,我需要知道是否有任何技术解决方案来获取在队列中传递的每条消息的副本(拦截消息)而不实际使用它。
还要求不修改任何现有服务的代码,因此我的计划是创建一个额外的连接到此队列的名称,这些队列是如何嗅探消息的。
我想知道这在技术上是否可行。
针对您的情况有几种不同的可能解决方案,根据您的具体要求,这些解决方案可能合适也可能不合适。
如果 InfluxDB 侦听器组件可以与您的微服务并行运行,那么完成这项工作的最简单方法是发布微服务发布一个主题,将消费微服务连接到一个队列订阅了同一个主题,并且 InfluxDB 侦听器组件将有自己的队列订阅同一个主题...这允许它接收由发送的每条消息的副本发布微服务(标准 pub/sub 模式)。这是 Solace 的典型最佳实践,即在主题上发布,从队列中消费,并在基础设施中进行主题到队列的映射 configured/controlled ...应用程序(例如添加新的侦听器)而不影响您现有的 code/flows.
如果您不能更改您的发布者代码以发布到主题,那么您仍然可以通过为 InfluxDB 消费者使用第二个队列并将其订阅到第一个队列的 "network topic" 来实现相同的功能,看起来像 #P2P/QUE/queue-name
...您可以在队列的详细信息中看到这个特殊主题。
或者,如果您需要让 InfluxDB 侦听器组件内联到您的微服务应用程序(而不是通过消息副本并行),那么您需要使用一个队列来发布您的第一个微服务进入,然后您的 InfluxDB 侦听器从中消费...然后它进行内容路由/决策制定,然后将消息发布回第二个队列,第二个微服务可以从中消费。这实质上使 InfluxDB 侦听器只是微服务之间处理链中的另一个微服务。
请注意,对于前两个选项(将消息副本放在两个队列中),Solace 仅在磁盘上保留一个消息副本并维护引用计数。因此磁盘使用不受 "fan-out".
的影响