Sender/receiver 消息

本文提供了一个使用Java实现的JMS消息发送与接收的简单示例。该示例通过WebLogic服务器的JNDI服务进行配置,并展示了如何创建连接工厂、会话及发送者和接收者来实现消息的发送与接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sender
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Hashtable;
import javax.jms.Queue;

import javax.jms.QueueConnection;

import javax.jms.QueueConnectionFactory;

import javax.jms.QueueSender;

import javax.jms.QueueSession;

import javax.jms.Session;

import javax.jms.TextMessage;

import javax.naming.Context;

import javax.naming.InitialContext;

/**
* @author Administrator
* @version 1.0
* @date 2008-8-30
* @class_displayName Sender
*/

public class Sender {

public void send() {

   BufferedReader reader = new BufferedReader(new InputStreamReader(
     System.in));

   String icf = "weblogic.jndi.WLInitialContextFactory";

   String url = "t3://192.168.20.36:7001";

   //              Initialise JNDI properties

   Hashtable env = new Hashtable();

   env.put(Context.INITIAL_CONTEXT_FACTORY, icf);

   env.put(Context.PROVIDER_URL, url);

   try {

    //Lookup

    final InitialContext initContext = new InitialContext(env);

    QueueConnectionFactory factory = (QueueConnectionFactory) initContext
      .lookup("SAS_factory");

    Queue destination = (Queue) initContext.lookup("SAS_Queue");

    initContext.close();

    //Create JMS Object

    QueueConnection connection = factory.createQueueConnection();

    QueueSession session = connection.createQueueSession(false,
      Session.AUTO_ACKNOWLEDGE);

    QueueSender sender = session.createSender(destination);

    //Send Message

    String messageText = null;

    while (true) {

     System.out.println("Enter message to send or 'quit':");

     messageText = reader.readLine();

     if ("quit".equals(messageText))

      break;

     TextMessage message = session.createTextMessage(messageText);

     sender.send(message);

    }

    //Exit

    System.out.println("Exiting...");

    reader.close();

    connection.close();

    System.out.println("Goodbye!");

   } catch (Exception e) {

    e.printStackTrace();

    System.exit(1);

   }

}

public static void main(String[] args) {

   (new Sender()).send();

}

}

Receiver

import java.util.Hashtable;

 

import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.MessageListener;

import javax.jms.Queue;

import javax.jms.QueueConnection;

import javax.jms.QueueConnectionFactory;

import javax.jms.QueueReceiver;

import javax.jms.QueueSession;

import javax.jms.Session;

import javax.jms.TextMessage;

import javax.naming.Context;

import javax.naming.InitialContext;

 

public class Receiver implements MessageListener{

     

      private boolean stop = false;

      public static void main(String[] args) {

             (new Receiver()).receive();

      }

     

      public void receive() {

             String icf = "weblogic.jndi.WLInitialContextFactory";

             String url="t3://192.168.20.36:7001";

                                                

//           Initialise JNDI properties

             Hashtable env = new Hashtable();

             env.put( Context.INITIAL_CONTEXT_FACTORY, icf );

             env.put( Context.PROVIDER_URL, url );

 

             try{

                    //Look up administratered objects

                    final InitialContext initContext = new InitialContext(env);

                    QueueConnectionFactory factory = (QueueConnectionFactory) initContext.lookup("SAS_factory");

                    Queue destination = (Queue) initContext.lookup("SAS_Queue");

                    initContext.close();

                   

                    //Create JMS objects

                    QueueConnection connection = factory.createQueueConnection();

                    QueueSession session = connection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);

                   

                    QueueReceiver receiver= session.createReceiver(destination);

                    receiver.setMessageListener(this);

                    connection.start();

                    System.out.println("服务启动");

                    //Wait for stop

                    while(!stop){

                           Thread.sleep(1000);

                    }

                   

                    //Exit

                    System.out.println("Exiting...");

                    connection.close();

                    System.out.println("Goodbye!");

                   

             }catch(Exception e){           

                    e.printStackTrace();

                    System.exit(1);

             }

      }

     

      public void onMessage(Message message) {

             try {

                    String msgText = ((TextMessage)message).getText();

                    System.out.println("接受到的消息是:"+msgText);

                    if("stop".equals(msgText)){

                           stop = true;

                    }

             } catch (JMSException e) {

                    e.printStackTrace();

                    stop = true;

             }

            

      }

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值