java的消息机制

首先解释一下
java消息服务JMS(Java Message Service)
简介:

Java 消息服务(Java Message Service,JMS)应用程序接口是一个Java 平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java 消息服务是一个与具体平台无关的 API。
Java 消息服务的规范包括两种消息模式,点对点和发布者/订阅者。许多提供商支持这一通用框架因此,程序员可以在他们的分布式软件中实现面向消息的操作,这些操作将具有不同面向消息中间件产品的可移植性。

总结:1、JMS是一个应用在应用程序之间、或者分布式系统之间进行异步通讯的API
2、提供两种消息模式,点对点和发布订阅者模式
JMS相关的开源项目有ActiveMQ.

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现

Spring整合ActiveMQ
0、导包
Spring整合ActiveMQ需要的包
ActiveMQ的核心包
Spring的核心包
spring-jms.jar
common-pool
common-logging’
log4j
1、配置Spring的XML文件

2、发送端代码编写

3、接收端代码编写
其次介绍以下
RMI(Java Remote Mothod Invocation)机制 ,java远程方法调用
简介:

RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。

总结:RMI可以作为分布式系统中远程对象的调用的java的解决方案

java的消息机制是建立在Observer设计模式基础上的。在Java中提供了基于这种模式的Observable/Observer事件框架,分别由java.util.Observable类和java.util.Observer接口组成,其中,Observer是观察者角色,Observable是被观察目标(subject)角色。
Observable是一个封装了基本功能的类,比如注册observer(attach功能),注销observer(detatch功能)等。我们一般只需从Observalbe派生我们自己的观察者。应该注意的是,Observable必须是“有变化”才触发通知observer这一任务。即如果我们不主动设置changed属性为true,将不会有任何变化,也就是说不会有“通知”。因此,设置changed属性的值是我们应用jdk observer 设计模式的关键所在。Observable提供了setChange()来设置changed属性,符合了“只有observalbe才能直接或间接通知observer”(observable设计模式的)要求。
实现Observer模式的步骤或许是这样的

  1. 定义封装的消息类,作为消息数据的承载体,

  2. 定义监听器,其中定义消息处理方法。

  3. 定义消息发送类,增加注册和通知发送实现

//第二步,定义监听器
class MyObservable extends Observable {
        //第一步,封装消息数据
        private String data;

        public void changeValue(String fValue) {
            data = fValue;
            setChanged();
        }
        @Override
        public synchronized void addObserver(Observer o) {
            // TODO Auto-generated method stub
            super.addObserver(o);
        }
    }
//第三步,定义发送类
 class MyObserver implements Observer{
        //当数据改变时,通知发送类
        public void update(Observable o, Object arg) {
            System.out.println("data changed to"+(String)arg);  
        }
    }
//第四步测试
MyObservable myOservable = new Test2().new MyObservable();
        myOservable.addObserver(new MyObserver());
        String sValue = "Hello Msg";
        myOservable.changeValue(sValue);
        myOservable.notifyObservers(sValue + "!");//刷新数据,通知Observable更新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值