`
longgangbai
  • 浏览: 7339151 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ActiveMQ中advisory的使用和原理

 
阅读更多

ActiveMQ中的监控和管理也可以通过Advisory实现对消息生产者和消息消费者以及队列的监控。Advisory实质通过事件监听实现。

调用过程的序列图如下:

 

1.Advisory中实现对队列目标的监控:

A.队列目标的事件类:DestinationEvent继承EventObject实现对DestinationInfo的监控。

B.通过队列目标的监听实现对队列事件的监控

public interface DestinationListener {

    void onDestinationEvent(DestinationEvent event);

}

C.通过DestinationSource类实现对Broker中队列目标Destination的跟踪。

2.Advisory中实现对消费者的监控:

A.通过抽象类ConsumerEvent实现对消费者的监控。ConsumerEvent继承自EventObject

       针对对Consumer监控和管理由子类ConsumerStartedEventConsumerStoppedEvent实现。

B.通过消费者监听实现对消费者的监听。

public interface ConsumerListener {

    void onConsumerEvent(ConsumerEvent event);

}

C.通过ConsumerEventSource对消费者的监听。

3.Advisory中实现对生产者的监控:

A.通过抽象类ProducerEvent实现对消费者的监控。ProducerEvent继承自EventObject

       针对对Producter监控和管理由子类ProducerStartedEventProducerStoppedEvent实现。

B.通过生产者监听实现对消费者的监听。

public interface ProducerListener {

    void onProducerEvent(ProducerEvent event);

}

C.通过ProducerEventSource对消费者的监听。

自定义事件:

package easyway.app.activemq.demo.events;
import java.util.EventObject;
/**
 * 通过EasywayEvent.java文件创建EasywayEvent类,这个类继承EventObject。这个类的构造函数的参数传递了产生这个事件的事件源(比如各种控件),方法getSource用来获得这个事件源的引用。
 * @author Owner
 *
 */
public class EasywayEvent  extends EventObject
{
        /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
		Object obj;
        public EasywayEvent(Object source)
        {
               super(source);
               obj = source;
        }
        public Object getSource()
        {
               return obj;
        }
        public void say()
        {
               System.out.println("This is say method...");
        }
}

 监听器:

package easyway.app.activemq.demo.events;

/**
 * 定义新的事件监听接口,该接口继承自EventListener;该接口包含对DemeEvent事件的处理程序:
 */
import java.util.EventListener;
public interface EasywayListener extends EventListener
{
        public void easywayEvent(EasywayEvent dm);
} 

 

事件监听实现类:

package easyway.app.activemq.demo.events;


	public class EasyWayListener1 implements EasywayListener
	{
		public void easywayEvent(EasywayEvent dm) {
            System.out.println("Inside listener1...");			
		}
	}

 

测试类:

package easyway.app.activemq.demo.events;

import java.util.*;
/**
 * 通过EasyWaySource..ava文件创造一个事件源类,它用一个java.utile.Vector对象来存储所有的事件监听
 * 器对象,存储方式是通过addListener(..)这样的方法。notifyDemeEvent(..)是触发事件的方法,
 * 用来通知系统:事件发生了,你调用相应的处理函数(回调函数)吧。
 * @author Owner
 *
 */
public class EasyWaySource {

       private Vector<EasywayListener> repository = new Vector<EasywayListener>();
       EasywayListener dl;
       public EasyWaySource()
       {
 
       }
       public void addDemoListener(EasywayListener dl)
       {
              repository.addElement(dl);
       }
       public void notifyDemoEvent()
       {
              Enumeration enum1 = repository.elements();
              while(enum1.hasMoreElements())
              {
                    dl = (EasywayListener)enum1.nextElement();
                    dl.easywayEvent(new EasywayEvent(this));
              }
       }
}

 

分享到:
评论

相关推荐

    ActiveMQ安装和使用

    ActiveMQ可以作为消息中间件用于异步通信场景,例如消息队列(Queue)和发布/订阅模型(Pub/Sub),这些特性使其在分布式系统中得到广泛应用。 #### 二、安装步骤 ##### 1. 环境准备 - **操作系统**:CentOS 6.6 ...

    ActiveMQ连接和使用测试工程

    通过这个测试工程,开发者可以深入理解ActiveMQ的工作原理,学习如何在实际项目中利用其特性,提升系统的稳定性和可扩展性。同时,也可以借此机会熟悉Java的JMS(Java Message Service)API,为后续的分布式系统开发...

    ActiveMQ的安装与使用

    ActiveMQ安装与使用中,我们还需要了解如何通过控制台管理消息队列,如何创建连接工厂和目的地以及如何创建生产者和消费者等。这些都是开发人员在使用ActiveMQ进行企业级消息传递时必须要掌握的技能。 总的来说,...

    Activemq原理文档

    Activemq原理文档 Activemq是Apache出品的开源消息总线,完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现。 Activemq是当今J2EE应用中的重要组件之一,因其强劲的消息队列处理能力和高性能的消息传输机制而广受...

    activeMQ初学使用demo

    通过这个"ActiveMQ初学使用demo",你将能够掌握ActiveMQ的基本操作,理解消息队列和主题的工作原理,以及如何在实际项目中使用它们。这将为你的分布式系统设计打下坚实的基础,帮助你有效地解耦系统组件,提高系统的...

    ActiveMq的安装和使用

    在实际使用中,还需要对ActiveMQ进行深入学习和掌握,包括如何创建和管理消息队列、主题、订阅者以及消息生产者等内容,从而能充分利用ActiveMQ的强大功能,为应用系统提供稳定、高效的消息传递解决方案。...

    ActiveMQ使用手册(中文版)

    ### ActiveMQ 使用手册知识点概述 #### 一、ActiveMQ 原理与基本构件 ...以上知识点全面覆盖了ActiveMQ的核心概念、配置细节、集群方式以及监控和使用注意事项等方面,帮助用户深入了解并高效使用ActiveMQ。

    activeMq in action 使用activeMq开发JMS的简单讲述

    ActiveMQ是Apache软件基金会开发的一款开源消息...理解其工作原理和使用方式,有助于构建稳定、高效的分布式系统。通过实际项目中的应用,开发者可以进一步掌握ActiveMQ的性能优化和问题排查技巧,提升系统的整体质量。

    ActiveMQ使用SSL加密文件Demo

    在 ActiveMQ 中,启用 SSL 需要创建并配置相关的证书和密钥库。 1. **创建密钥库(KeyStore)** - 使用 `keytool` 命令行工具创建一个新的密钥库,例如 `activemq.ks`。 - 生成自签名证书,将它导入到密钥库中,...

    JMS 使用 ActiveMQ 传送文件

    “源码”标签暗示这篇博文可能包含了一些示例代码,展示了如何在实际项目中使用JMS和ActiveMQ进行文件传递。“工具”标签则可能意味着ActiveMQ作为工具被介绍,同时博主可能也提到了其他与JMS相关的工具或库。 **...

    activeMQ收发工具.rar

    8. **事务处理**:学习如何在ActiveMQ中使用JMS事务确保消息的一致性和可靠性。 9. **性能监控**:ActiveMQ提供了一套强大的监控工具,包括Web控制台,可以用来查看消息的发送、接收和堆积情况,帮助优化系统性能。...

    activemq ajax方式demo

    通过分析这些文件,我们可以深入理解如何在实际项目中结合使用ActiveMQ和Ajax进行Web通信,以及如何处理中文乱码问题。 总结起来,"activemq ajax方式demo"是一个关于如何使用Ajax技术与ActiveMQ集成的实例,特别...

    ActiveMQ使用入门.pdf

    尽管对于大型互联网应用,现代的分布式消息系统如RabbitMQ、Kafka或RocketMQ可能更为推荐,但理解ActiveMQ的基本原理和用法对于开发者来说仍然至关重要。 1. 面向消息中间件和ActiveMQ简介 面向消息中间件(MOM)...

    ActiveMQ开发规范及方案

    分布式系统中使用ActiveMQ可以实现系统之间的解耦和异步通信,从而提高系统的性能和可靠性。 场景分析 分布式系统中使用ActiveMQ需要对系统进行场景分析,以确定系统的需求和限制。例如,需要确定系统的性能需求、...

    activemq C#客户端使用demo

    在C#中使用ActiveMQ,你需要引用Apache.NMS和Apache.NMS.ActiveMQ这两个库,它们包含了C#客户端与ActiveMQ服务器交互所需的所有功能。首先,确保已经正确安装并配置了ActiveMQ服务器,可以通过下载并运行ActiveMQ的...

    ActiveMQ(中文)参考手册

    ActiveMQ(中文)参考手册 ActiveMQ(中文)参考手册 ActiveMQ(中文)参考手册 ActiveMQ(中文)参考手册

    自己实现的ActiveMQ连接池和新版本ActiveMQ自带的连接池,封装好的工具类,可直接使用

    无论是自定义实现还是使用官方提供的PooledConnectionFactory,都需要深入理解其工作原理和配置选项,以便在项目中正确、高效地使用。这个资源为开发者提供了一个起点,帮助他们快速集成和管理ActiveMQ的连接资源。

    ActiveMQ消息服务器 v6.0.1.zip

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递标准(JMS,...对于毕业设计论文和计算机案例研究,ActiveMQ源代码是一个很好的学习和分析对象,帮助理解消息中间件的工作原理和实现细节。

    ActiveMQ相关jar包--使用Connection连接池

    在这个场景中,我们将关注如何利用ActiveMQ的连接池功能,以优化资源管理和提高性能。 首先,理解`Connection`在ActiveMQ中的角色是至关重要的。一个`Connection`代表到ActiveMQ服务器的物理连接,它可以创建多个`...

    SpringBoot+ActiveMq+MQTT实现消息的发送和接收

    在本文中,我们将深入探讨如何使用SpringBoot、...通过理解这些技术的工作原理和集成方式,你可以更好地实现后台消费者的监听、生产者的发送,以及消息接口和服务的实现,从而在你的项目中构建出强大的消息处理能力。

Global site tag (gtag.js) - Google Analytics