a simple jsm sample

原创 2007年10月11日 11:19:00

PS:
1. implements MessageListener 

2. create TopicConnection [using jndi]

3. create two session

4. create publisher and subscriber

5. set listener

6. connection start() ,  publisher.publish(message), onMessage()

7. connection close()

package jms.chat;

import javax.jms.*;
import javax.naming.*;
import java.io.*;
import java.io.InputStreamReader;
import java.util.Properties;

public class Chat implements MessageListener ...{
 
private TopicSession pubSession;

 
private TopicSession subSession;

 
private TopicPublisher publisher;

 
private TopicConnection connection;

 
private String username;

 
/**//* Constructor. Establish JMS publisher and subscriber */
 
public Chat(String topicName, String username, String password)
   
throws Exception ...{
  
// Obtain a JNDI connection
  Properties env = new Properties();
  
// ... specify the JNDI properties specific to the vendor
  InitialContext jndi = new InitialContext(env);
  
// Look up a JMS connection factory
  TopicConnectionFactory conFactory = (TopicConnectionFactory) jndi
    .lookup(
"TopicConnectionFactory");
  
// Create a JMS connection
  TopicConnection connection = conFactory.createTopicConnection(username,
    password);
  
  
// Create two JMS session objects
  TopicSession pubSession = connection.createTopicSession(false,
    Session.AUTO_ACKNOWLEDGE);
  TopicSession subSession 
= connection.createTopicSession(false,
    Session.AUTO_ACKNOWLEDGE);
  
  
  
// Look up a JMS topic
  Topic chatTopic = (Topic) jndi.lookup(topicName);
  
// Create a JMS publisher and subscriber
  TopicPublisher publisher = pubSession.createPublisher(chatTopic);
  TopicSubscriber subscriber 
= subSession.createSubscriber(chatTopic);
  
// Set a JMS message listener
  subscriber.setMessageListener(this);
  
  
// Intialize the Chat application
  set(connection, pubSession, subSession, publisher, username);
  
// Start the JMS connection; allows messages to be delivered
  connection.start();
 }


 
/**//* Initialize the instance variables */
 
public void set(TopicConnection con, TopicSession pubSess,
   TopicSession subSess, TopicPublisher pub, String username) 
...{
  
this.connection = con;
  
this.pubSession = pubSess;
  
this.subSession = subSess;
  
this.publisher = pub;
  
this.username = username;
 }


 
/**//* Receive message from topic subscriber */
 
public void onMessage(Message message) ...{
  
try ...{
   TextMessage textMessage 
= (TextMessage) message;
   String text 
= textMessage.getText();
   System.out.println(text);
  }
 catch (JMSException jmse) ...{
   jmse.printStackTrace();
  }

 }


 
/**//* Create and send message using topic publisher */
 
protected void writeMessage(String text) throws JMSException ...{
  TextMessage message 
= pubSession.createTextMessage();
  message.setText(username 
+ " : " + text);
  publisher.publish(message);
 }


 
/**//* Close the JMS connection */
 
public void close() throws JMSException ...{
  connection.close();
 }


 
/**//* Run the Chat client */
 
public static void main(String[] args) ...{
  
try ...{
   
if (args.length != 3)
    System.out.println(
"Topic or username missing");
   
// args[0]=topicName; args[1]=username; args[2]=password
   Chat chat = new Chat(args[0], args[1], args[2]);
   
// Read from command line
   BufferedReader commandLine = new java.io.BufferedReader(
     
new InputStreamReader(System.in));
   
// Loop until the word "exit" is typed
   while (true...{
    String s 
= commandLine.readLine();
    
if (s.equalsIgnoreCase("exit")) ...{
     chat.close(); 
// close down connection
     System.exit(0);// exit program
    }
 else
     chat.writeMessage(s);
   }

  }
 catch (Exception e) ...{
   e.printStackTrace();
  }

 }

}
 

 

Simple Rtmp Server的安装与简单使用

Simple Rtmp Server是一个国人编写的开源的RTMP/HLS流媒体服务器. 功能与nginx-rtmp-module类似, 可以实现rtmp/hls的分发.   有关nginx-rtmp...
  • redstarofsleep
  • redstarofsleep
  • 2015年04月28日 10:16
  • 11626

Codeforces 11D A Simple Task 统计简单无向图中环的个数

状态压缩动态规划计算简单无向图中简单环的个数。
  • fangzhenpeng
  • fangzhenpeng
  • 2015年10月12日 19:01
  • 1208

maven学习使用<二> - - - 创建maven web工程

MyEclipse创建maven web工程
  • kyle0349
  • kyle0349
  • 2016年07月31日 13:09
  • 1075

<Ejb3InAction> Sample02 for Weblogic - Simple example of Stateless, Stateful, MDB and JPA Enity

0. Prerequisite Actually this sample is postponed, please reference to prerequisites of sample03 a...
  • sun_xo
  • sun_xo
  • 2017年03月22日 15:12
  • 132

JAX-RS Simple SSE Sample

package com.oracle.gcs.pguo.examples.jaxrs.sse.simple; import java.io.IOException; import javax.ws...
  • lixiaoweidown
  • lixiaoweidown
  • 2014年09月20日 19:45
  • 427

<Ejb3InAction> Sample02 for Glassfish - Simple example of Stateless, Stateful, MDB and JPA Enity

0. Prerequisite 1) JDBC resources We use default JDBC resources, which is based on database sun-ap...
  • sun_xo
  • sun_xo
  • 2017年04月02日 16:36
  • 180

simple arcgis server view sample学习笔记

  • 2007年11月05日 09:36
  • 55KB
  • 下载

a sample program of Simple Protocol

  • 2006年02月23日 09:05
  • 8KB
  • 下载

DirectXTK Simple Win32 Sample

  • 2016年08月24日 21:14
  • 5.16MB
  • 下载

JSM-activeMQ

  • 2017年12月19日 15:39
  • 15.26MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:a simple jsm sample
举报原因:
原因补充:

(最多只允许输入30个字)