精华内容
下载资源
问答
  • 主要为大家详细介绍了Android异步消息机制的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • J2EE的异步消息机制

    2011-07-27 10:52:35
    J2EE的异步消息机制J2EE的异步消息机制J2EE的异步消息机制J2EE的异步消息机制
  • 主要为大家详细介绍了android异步消息机制,源码层面彻底解析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • J2EE的异步消息机制(上下版),JAVA教程,附件为doc版本,下载后可用word2003及以上版本打开。 在分布式企业级应用程序中,异步消息机制用于有效地协调各个部分的工作。 J2EE为我们提供了JMS和消息驱动豆(Message-...
  • 主要为大家详细介绍了android异步消息机制,从源码层面解析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Android Handler 异步消息机制的例子,详细讲解请看http://bbs.droidstouch.com/thread-70-1-1.html
  • JMS异步消息机制

    千次阅读 2010-11-15 17:15:00
    在分布式企业级应用程序中,异步消息机制用于有效地协调各个部分的工作。  J2EE为我们提供了JMS和消息驱动Bean(Message-Driven Bean),用来实现应用程序各个部件之间的异步消息传递。  一....

    在分布式企业级应用程序中,异步消息机制用于有效地协调各个部分的工作。
      J2EE为我们提供了JMS和消息驱动Bean(Message-Driven Bean),用来实现应用程序各个部件之间的异步消息传递。
      一.什么是消息系统?
      通常一个消息系统允许分开的未耦合的应用程序之间可靠地异步通信。在企业应用时,需要一种异步的,非阻塞的消息传递。比如,一个客户端可能希望给一个服务器发送一个请求后,不在乎是否马上能得到回应。这样,客户端没有理由必须等待服务器处理请求。客户端应用程序在递交一个请求之后,只需确保请求到达服务器端后,就可以处理其他任务。通常,这是很高效的。消息系统提供了许多其他分布式对象计算模型没有的优点。它鼓励在消息产生者和使用者之间的"松耦合",在它们之间有很高程度的事务处理。对于使用者,它不在乎谁产生了消息,产生者是否仍在网络上以及消息是什么时候产生的。这就允许建立动态的,可靠的和灵活的系统。整个的子系统能被修改而不会影响系统的其他部分。
      另外的优点包括:系统的高度可扩展性,容易与其他系统进行集成,以及高度的可靠性。由于可靠性和可扩展性,使得它们用于解决许多商业和科学计算问题。比如,消息系统是许多应用程序的基础,这些应用程序可以是工作流,网络管理,通信服务或供应链管理程序。在JAVA技术中,处理异步消息的能力是通过JMS来实现的。JMS最初设计是为了给传统的消息对象中间件提供一个标准的JAVA接口。而这些产品是在一个企业级应用程序中必须的。现在出现了许多支持JMS的纯JAVA的产品。

    feedom.net关注网管是我们的使命


      消息系统类型
      通常有两种消息类型。
      1.发布/订阅(publish/subscribe)
      发布/订阅消息系统支持一个事件驱动模型,消息产生者和使用者都参与消息的传递。产生者发布事件,而使用者订阅感兴趣的事件,并使用事件。产生者将消息和一个特定的主题(Topic)连在一起,消息系统根据使用者注册的兴趣,将消息传给使用者。
      2.点对点(Peer to peer)
      在点对点的消息系统中,消息分发给一个单独的使用者。它维持一个"进入"消息队列。消息应用程序发送消息到一个特定的队列,而客户端从一个队列中得到消息。
      二.JMS简介
      JMS的目的是提供给消息系统客户一个固定的接口,而且与底层的消息提供者无关。这样,客户端的应用程序可以在不同的机器和操作系统中移植,而且能在不同的消息系统产品之间转移。JMS客户端都是建立在JAVA技术上的,从而也能使用其他JAVA API,如JDBC数据库连接,使用JAVA BEAN组件模型,JDNI名字服务,JTA客户端事务处理控制以及J2SE和J2EE API来实现企业级应用服务程序。
      1.JMS对象模型
       
      图1显示了JMS对象,用于提供JMS客户端与JMS服务提供者相连的对象。 feedom.net国内最早的网管网站
      ConnectionFactory是一个客户端用来创建一个Connection的管理对象。由于在Connection创建时有授权和通信建立过程,因此这个对象是比较大的。
      Destination对象将一个消息的目的和服务提供者有关的地址及配置信息包装起来。
      Session是JMS实体,用来支持事务处理和异步消息消费。JMS并不需要客户端的代码用于异步消息消费或能处理多个并发消息。通常,事务的复杂性都由一个Session来封装。
      一个Session是一个原子单位的工作,与数据库的事务一样,要实现多线程事务比较困难。Session提供了在一个线程编程模式下的并发的优点。
      MessageProducer和MessageConsumer对象由Session对象创建。用于发送和接受消息。为了确保消息的传递,JMS服务提供者处理的消息都要处于PERSISTENT模式。PERSISTENT模式使得JMS提供者出问题后,也能让消息保存下来。
      Session,MessageProducer和MessageConsumer都不支持并发,而ConnectionFactory,Destination和Connection都支持并发。
      2.JMS应用程序开发
      JMS中的消息
      在消息系统中,应用程序之间通信的关键是消息。因此使用JMS必须要先理解消息。
      在JMS中,消息由三部分组成:
      MESSAGE HEADER用于识别消息,比如用于判断一个给定的消息是否是一个"订阅者"

    bbs.bitsCN.com国内最早的网管论坛


      PROPERITIES用于与应用程序相关的,提供者相关的和可选项的信息
      BODY是消息的内容,支持几种格式,包括TextMessage(对String一个简单的封装)和ObjectMessage(对任意对象的封装,但必须支持序列化),也支持其他格式。
      TextMessage
      一个TextMessage是一个String对象的封装。在只有文本对象传递时,是很有用的。它假设许多消息系统是建立在XML上的。从而TextMessage就可以成为包装它们的容器。
      创建一个TextMessage对象很简单,如下面的代码:
      TextMessage message=session.createMessage();
      message.setText("Hello, world!");
      ObjectMessage
      如名字所示,它是对一个JAVA对象的封装的消息。任何可序列化的JAVA对象都能用于ObjectMessage,如果必须将多个对象封装在一个消息里传递,可以使用Collection对象,来包括多个序列化对象。
      下面是创建一个ObjectMessage
      ObjectMessage message=session.createObjectMessage();
      message.setObject(myObject);
      创建一个JMS客户端程序
      一个典型的JMS客户端由下面的几个基本步骤来创建:
      创建一个到消息系统提供者的连接(Connection) bitsCN.com中国网管联盟
      创建一个Session,用于接收和发送消息
      创建MessageProducer和MessageConsumer来创建和接收消息
      当完成了上述步骤后,一个消息产生者客户端将创建并发布消息到一个主题,而消息使用者客户端会接收与一个主题相关的消息。
      1.创建一个Connection
      一个Connection提供客户端对底层的消息系统的访问。并实现资源的分配和管理。通过使用一个ConnectionFactory来创建一个Connection,通常用JDNI来指定:
       
      2.创建一个Session
      Session是一个比较大的JMS对象,他提供了生产和消费消息的手段。用于创建消息使用者和消息产生者。
      topicSession = topicConnection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
      两个参数用于控制事务和消息确认。
      3.定位一个Topic
      用JDNI来定位一个Topic,Topic用于识别发送或接收的消息,在发布/订阅系统中。订阅者订阅一个给定的Topic,而发布者将它发布的消息与一个Topic相连。
      下面是创建一个Topic "WeatherReport"
      Topic weatherTopic=messaging.lookup("WeatherReport");
      4.启动Connection

    bitsCN全力打造网管学习平台


      在上面的初始化步骤之后,消息流是禁止的,用于防止在初始化时发生不可预料的行为。一旦初始化结束,必须让Connection启动消息系统。
      topicConnection.start();
      5.创建一个消息产生者
      在发布/订阅里,一个产生者发布消息到一个指定的Topic。下面的代码显示创建一个产生者,以及后续的建立和发布一个简单文本消息。
      TopicPublisher publisher=session.createPublisher(weatherTopic);
      TexeMessage message=session.createMessage();
      message.setText("ssss");
      publisher.publish(message);
      下面是一个消息使用者的代码
      
      三.消息驱动Bean简介
      异步消息也可以由消息驱动Bean来实现。在EJB 1.1规范中,定义了两种类型的EJB。分别是实体Bean(Entity Bean)和会话Bean(Session Bean)。客户端通常是以同步的,阻塞方式来调用Bean的方法。消息驱动Bean将EJB和JMS的功能结合在一起。
      正如前述,会话Bean通常实现商务逻辑,客户端不能共享一个会话Bean。实体Bean通常和一些在永久存储中的一些实体条目相对应的。这两种Bean通常都有REMOTE和HOME接口,用来与客户端交互。并且,这些交互都是同步的,阻塞方式进行的。比如,一个请求发送给一个Bean,通过阻塞式方法调用,服务器返回一个相应。调用者在收到返回后,才能进行下一步处理。消息驱动Bean通常配置成是一个特别的主题(topic)或队列的客户端,作为消息的使用者。但消息驱动Bean没有HOME和REMOTE接口。一个消息产生者将消息写入TOPIC或队列时,并不知道使用者是一个消息驱动Bean。这就允许集成一个分布式的计算系统时,有很大的灵活性。消息驱动Bean没有会话性质的状态,所有的实例在不处理请求时是相同的,这与无状态会话Bean是类似的。将Bean的实例放在缓冲池里,也是高效处理消息驱动Bean的一种方法。一个消息驱动Bean必须间接或直接地从javax.ejb.MessageDrivenBean接口继承而来。这个接口是由javax.jms.MessageListener继承而来。这个方法的一个参数是javax.jms.Message。可以是任何有效的JMS消息类型。方法的申明中并不包含一个thrown语句。因此在消息处理中,不会仍出应用程序异常。当容器接收到消息时,它首先是从一个缓冲池里得到现成的一个消息驱动Bean,然后,如果配置文件需要的,容器还要设置一个和事务处理上下文的一个联系。当这些管理任务完成时,接收到的消息传递给onMessage()方法。一旦方法完成,事务确认或返回,Bean又被重新放回到缓冲池。 bbs.bitsCN.com国内最早的网管论坛
      ejbRemove()在把消息驱动Bean从任何存储上删除时调用。并进行清楚操作和垃圾收集。必须在ejbRemove()方法中释放所有Bean的实例用到的资源。

    展开全文
  • Android Handler 异步消息机制

    千次阅读 2011-08-27 23:09:45
    本文转载(Touch Android 论坛) :Android Handler 异步消息机制   Handler基本概念:  Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分...

    本文转载(Touch Android 论坛) :Android Handler 异步消息机制

     

    Handler基本概念:
          Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。

    Handler 常用方法:
    post(Runnable)
            postAtTime(Runnable,long)
            postDelayed(Runnable long)
            sendEmptyMessage(int)
            sendMessage(Message)
            sendMessageAtTime(Message,long)
            sendMessageDelayed(Message,long)
    以上post类方法允许你排列一个Runnable对象到主线程队列中,
            sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新.


         个人认为Android 中Handler 很像 Web开发中的Ajax。拿jquery 的$.ajax()方法来举例:
    $.ajax({
         url:"xxxx.jsp",
         dataType:"text",
         success:function(message){ // 处理返回的结果}
          })

    首先我们按老规矩先看Demo的效果图:

     

     

     

    1、点击 测试 按钮的开启一条线程处理其他比较耗时的业务,相当于 一个Web页面点击页面的某个按钮后调用javascript 的ajax方法去后台去数据,而本身的页面是没变的。

    2、是否是异步的呢?从图二可以看出。先打印出了线程中 “start Thread”,才执行 onClick 方法中的 “OnClick........”

    3、下面代码效果等于ajax请求的后台的响应,那Java来说就是 printWriter.prinlt(1);

    Thread thread = new Thread()
     
        {
     
                public void run()
     
                {
     
                        Log.i(TAG, "start Thread");
     
                        
                        //发送一个空消息到消息队列里面
     
                        //此方法相当于后台往前台Ajax响应结果,在Java当中,相当于一个Action方法里面out.println(1);
     
                        handler.sendEmptyMessage(1);
     
                };
     
        };


     

     

    4、 以下代码相当于ajax的 success:function(message){if(message==1){//do something}}

    if(msg.what ==1)
     
                        {
     
                                txtTest.setText("异步处理结果 === Handler ");
     
                        }


     

    下面看一下具体代码是怎么实现的:

    main.xml文件:

    <?xml version="1.0" encoding="utf-8"?>
     
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     
        android:orientation="vertical"
     
        android:layout_width="fill_parent"
     
        android:layout_height="fill_parent"
     
        >
     
    <TextView  
     
            android:id="@+id/txtTest"
     
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="HandlerTest"
     
        />
     
        
       
     
       <Button android:id="@+id/btnTest"  
     
               android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="测试"
     
        />
     
    </LinearLayout>


     

    Activity:

    package com.droidstouc.handler.test;
     
    
    import android.app.Activity;
     
    import android.os.Bundle;
     
    import android.os.Handler;
     
    import android.util.Log;
     
    import android.view.View;
     
    import android.view.View.OnClickListener;
     
    import android.widget.Button;
     
    import android.widget.TextView;
     
    
    /**
     
    * Android Handler 异步消息处理机制
     
    * @author Administrator
     
    *
     
    */
     
    public class HandlerTestActivity extends Activity {
     
       
     
            
            
            private static final String TAG="HandlerTestActivity";
     
            
            private Button btnTest;
     
            private TextView  txtTest;
     
            
            
        public void onCreate(Bundle savedInstanceState) {
     
            super.onCreate(savedInstanceState);
     
            setContentView(R.layout.main);
     
            
     
            
     
            txtTest = (TextView) this.findViewById(R.id.txtTest);
     
            btnTest= (Button) this.findViewById(R.id.btnTest);
     
            
     
            //设置 OnClick **        
            btnTest.setOnClickListener(new BtnTestOnClickListener());
     
        }
     
        
        
        
        //点击测试按钮后调用 BtnTestOnClickListener 的 OnClick 方法
     
        class BtnTestOnClickListener implements OnClickListener
     
        {
     
                    @Override
     
                    public void onClick(View v)
     
                    {
     
                    /*        //把线程对象放到handler的队列中,线程会马上启动执行
     
                            handler.post(thread);*/
     
                            
                            //启动线程
     
                            thread.start();
     
                            try
     
                            {
     
                                    // 为了看到异步效果,我让当前线程停止了2秒钟
     
                                    Thread.sleep(2000);
     
                            }
     
                            catch (InterruptedException e)
     
                            {
     
                                    e.printStackTrace();
     
                            }
     
                            
                            Log.i(TAG, "OnClick........");
     
                    }
     
                
        }
     
        
        
       // 定义一个Handler,用来异步处理数据
     
        Handler handler = new Handler()
     
        {
     
                //相当于jquery $.ajax方法中的 Success:function(){}
     
                
                public void handleMessage(android.os.Message msg) 
                {
     
                        // 对线程中 handler 返回的结果进行处理
     
                        
                        Log.i(TAG, "结果返回,正在处理");
     
                        if(msg.what ==1)
     
                        {
     
                                txtTest.setText("异步处理结果 === Handler ");
     
                        }
     
                        
                };
     
        };
     
        
        
        
        Thread thread = new Thread()
     
        {
     
                public void run()
     
                {
     
                        Log.i(TAG, "start Thread");
     
                        
                        //发送一个空消息到消息队列里面
     
                        //此方法相当于后台往前台Ajax响应结果,在Java当中,相当于一个Action方法里面out.println(1);
     
                        handler.sendEmptyMessage(1);
     
                };
     
        };
     
    }


     

     

     

     

    展开全文
  • 同步和异步消息机制

    2018-05-16 07:13:21
    消息通信的基本方式有两种:1、同步方式两个通信应用服务之间必须要进行同步,两个服务之间必须都是正常运行的。发送程序和接收程序都必须一直处于运行状态,并且随时做好相互通信的准备。发送程序首先向接收程序...

    消息通信的基本方式有两种:

    1、同步方式

    两个通信应用服务之间必须要进行同步,两个服务之间必须都是正常运行的。发送程序和接收程序都必须一直处于运行状态,并且随时做好相互通信的准备。

    发送程序首先向接收程序发起一个请求,称之为发送消息,发送程序紧接着就会堵塞当前自身的进程,不与其他应用进行任何的通信以及交互,等待接收程序的响应,待发送消息得到接收程序的返回消息之后会继续向下运行,进行下一步的业务处理。

    2、异步方式

    两个通信应用之间可以不用同时在线等待,任何一方只需各自处理自己的业务,比如发送方发送消息以后不用登录接收方的响应,可以接着处理其他的任务。也就是说发送方和接收方都是相互独立存在的,发送方只管方,接收方只能接收,无须去等待对方的响应。

    Java中JMS就是典型的异步消息处理机制,JMS消息有两种类型:点对点、发布/订阅。

    展开全文
  • J2EE的异步消息机制(上)

    千次阅读 2004-12-04 17:52:00
    在分布式企业级应用程序中,异步消息机制用于有效地协调各个部分的工作。 J2EE为我们提供了JMS和消息驱动豆(Message-Driven Bean),用来实现应用程序各个部件之间的异步消息传递。 一.什么是消息系统? 通常...
        在分布式企业级应用程序中,异步消息机制用于有效地协调各个部分的工作。 

      J2EE为我们提供了JMS和消息驱动豆(Message-Driven Bean),用来实现应用程序各个部件之间的异步消息传递。 

      一.什么是消息系统? 

      通常一个消息系统允许分开的未耦合的应用程序之间可靠地异步通信。在企业应用时,需要一种异步的,非阻塞的消息传递。比如,一个客户端可能希望给一个服务器发送一个请求后,不在乎是否马上能得到回应。这样,客户端没有理由必须等待服务器处理请求。客户端应用程序在递交一个请求之后,只需确保请求到达服务器端后,就可以处理其他任务。通常,这是很高效的。消息系统提供了许多其他分布式对象计算模型没有的优点。它鼓励在消息产生者和使用者之间的"松耦合",在它们之间有很高程度的事务处理。对于使用者,它不在乎谁产生了消息,产生者是否仍在网络上以及消息是什么时候产生的。这就允许建立动态的,可靠的和灵活的系统。整个的子系统能被修改而不会影响系统的其他部分。 
      另外的优点包括:系统的高度可扩展性,容易与其他系统进行集成,以及高度的可靠性。由于可靠性和可扩展性,使得它们用于解决许多商业和科学计算问题。比如,消息系统是许多应用程序的基础,这些应用程序可以是工作流,网络管理,通信服务或供应链管理程序。在JAVA技术中,处理异步消息的能力是通过JMS来实现的。JMS最初设计是为了给传统的消息对象中间件提供一个标准的JAVA接口。而这些产品是在一个企业级应用程序中必须的。现在出现了许多支持JMS的纯JAVA的产品。 

      消息系统类型

      通常有两种消息类型。 

      1.发布/订阅(publish/subscribe) 

      发布/订阅消息系统支持一个事件驱动模型,消息产生者和使用者都参与消息的传递。产生者发布事件,而使用者订阅感兴趣的事件,并使用事件。产生者将消息和一个特定的主题(Topic)连在一起,消息系统根据使用者注册的兴趣,将消息传给使用者。 

      2.点对点(Peer to peer) 

      在点对点的消息系统中,消息分发给一个单独的使用者。它维持一个"进入"消息队列。消息应用程序发送消息到一个特定的队列,而客户端从一个队列中得到消息。 

      二.JMS简介 

      JMS的目的是提供给消息系统客户一个固定的接口,而且与底层的消息提供者无关。这样,客户端的应用程序可以在不同的机器和操作系统中移植,而且能在不同的消息系统产品之间转移。JMS客户端都是建立在JAVA技术上的,从而也能使用其他JAVAAPI,如JDBC数据库连接,使用JAVABEAN组件模型,JDNI名字服务,JTA客户端事务处理控制以及J2SE和J2EE API来实现企业级应用服务程序。 

      1.JMS对象模型 

    图1显示了JMS对象,用于提供JMS客户端与JMS服务提供者相连的对象。 

      ConnectionFactory是一个客户端用来创建一个Connection的管理对象。由于在Connection创建时有授权和通信建立过程,因此这个对象是比较大的。 

      Destination对象将一个消息的目的和服务提供者有关的地址及配置信息包装起来。 

      Session是JMS实体,用来支持事务处理和异步消息消费。JMS并不需要客户端的代码用于异步消息消费或能处理多个并发消息。通常,事务的复杂性都由一个Session来封装。 

      一个Session是一个原子单位的工作,与数据库的事务一样,要实现多线程事务比较困难。Session提供了在一个线程编程模式下的并发的优点。 

      MessageProducer和MessageConsumer对象由Session对象创建。用于发送和接受消息。为了确保消息的传递,JMS服务提供者处理的消息都要处于PERSISTENT模式。PERSISTENT模式使得JMS提供者出问题后,也能让消息保存下来。 

      Session,MessageProducer和MessageConsumer都不支持并发,而ConnectionFactory,Destination和Connection都支持并发。 

      2.JMS应用程序开发 

      JMS中的消息 

      在消息系统中,应用程序之间通信的关键是消息。因此使用JMS必须要先理解消息。 

      在JMS中,消息由三部分组成: 

      MESSAGE HEADER用于识别消息,比如用于判断一个给定的消息是否是一个"订阅者" 

      PROPERITIES用于与应用程序相关的,提供者相关的和可选项的信息 

      BODY是消息的内容,支持几种格式,包括TextMessage(对String一个简单的封装)和ObjectMessage(对任意对象的封装,但必须支持序列化),也支持其他格式。 

      TextMessage 

      一个TextMessage是一个String对象的封装。在只有文本对象传递时,是很有用的。它假设许多消息系统是建立在XML上的。从而TextMessage就可以成为包装它们的容器。 

      创建一个TextMessage对象很简单,如下面的代码: 

      TextMessage message=session.createMessage(); 

      message.setText("Hello, world!"); 

      ObjectMessage 

      如名字所示,它是对一个JAVA对象的封装的消息。任何可序列化的JAVA对象都能用于ObjectMessage,如果必须将多个对象封装在一个消息里传递,可以使用Collection对象,来包括多个序列化对象。 

      下面是创建一个ObjectMessage 

      ObjectMessage message=session.createObjectMessage(); 

      message.setObject(myObject); 

      创建一个JMS客户端程序 

      一个典型的JMS客户端由下面的几个基本步骤来创建: 

      创建一个到消息系统提供者的连接(Connection) 

      创建一个Session,用于接收和发送消息 

      创建MessageProducer和MessageConsumer来创建和接收消息 

      当完成了上述步骤后,一个消息产生者客户端将创建并发布消息到一个主题,而消息使用者客户端会接收与一个主题相关的消息。 

      1.创建一个Connection 

      一个Connection提供客户端对底层的消息系统的访问。并实现资源的分配和管理。通过使用一个ConnectionFactory来创建一个Connection,通常用JDNI来指定: 


     
    Connection message=new initialContext();
    TopicConnectionFactory topicConnectionFactory=(TopicConnectionFactory);
    topic = (Topic) jndiContext.lookup(topicName);
    topicConnection =topicConnectionFactory.createTopicConnection();

     

     
    2.创建一个Session 

      Session是一个比较大的JMS对象,他提供了生产和消费消息的手段。用于创建消息使用者和消息产生者。 

      topicSession = topicConnection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE); 

      两个参数用于控制事务和消息确认。 

      3.定位一个Topic 

      用JDNI来定位一个Topic,Topic用于识别发送或接收的消息,在发布/订阅系统中。订阅者订阅一个给定的Topic,而发布者将它发布的消息与一个Topic相连。 

      下面是创建一个Topic "WeatherReport" 

      Topic weatherTopic=messaging.lookup("WeatherReport"); 

      4.启动Connection 

      在上面的初始化步骤之后,消息流是禁止的,用于防止在初始化时发生不可预料的行为。一旦初始化结束,必须让Connection启动消息系统。 

      topicConnection.start(); 

      5.创建一个消息产生者 

      在发布/订阅里,一个产生者发布消息到一个指定的Topic。下面的代码显示创建一个产生者,以及后续的建立和发布一个简单文本消息。 

      TopicPublisher publisher=session.createPublisher(weatherTopic); 

      TexeMessage message=session.createMessage(); 

      message.setText("ssss"); 

      publisher.publish(message); 

      下面是一个消息使用者的代码 
     
    topicConnection =topicConnectionFactory.createTopicConnection();
    topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
    topicSubscriber = topicSession.createSubscriber(topic);
    topicListener = new MsgListener();
    topicSubscriber.setMessageListener(topicListener);
    topicConnection.start();
    展开全文
  • msg.target = this; 这是什么? queue.enqueueMessage(msg, uptimeMillis); 这个又是干嘛用的?
  • Android源码解析之(二)-->异步消息机制

    万次阅读 多人点赞 2016-03-04 16:39:06
    痛定思过,为了更好的深入android体系,决定学习android framework层源码,就从最简单的android异步消息机制开始吧。所以也就有了本文:android中的异步消息机制。本文主要从源码角度分析android的异步消息机制。 ...
  • 上篇说了半天,却回避了一个重要的问题:为什么要用异步呢,它有什么样的好处?坦率的说,我对这点的认识不是太深刻(套句俗语,只可意会,不可言传)。还是举个例子吧: 比如Client向Server发送一个...
  • * Android异步消息机制分析(附图) * * ======================================================= * * 问题的引入: * 在子线程中直接调用Handler handler=new Handler()此时报错: * Can't create handler ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 402,591
精华内容 161,036
关键字:

异步消息机制