zoukankan      html  css  js  c++  java
  • activeMQ公布订阅模式中中经常使用工具类

    package com.jms;
    
    import java.util.Map;
    import java.util.concurrent.ConcurrentHashMap;
    
    import javax.jms.BytesMessage;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.jms.JMSException;
    import javax.jms.MessageConsumer;
    import javax.jms.MessageProducer;
    import javax.jms.Queue;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    
    import org.apache.activemq.ActiveMQConnection;
    import org.apache.activemq.ActiveMQConnectionFactory;
    import org.clapper.util.logging.Logger;
    
    import com.pzoom.dsa.common.util.Log;
    import com.pzoom.dsa.nerd.mysql.DBQueryHelper;
    
    public class Jms
    {
      static ConnectionFactory connectionFactory;
      static Connection connection = null;
      static Session session;
      static Map<String, MessageProducer> sendQueues = new ConcurrentHashMap<String, MessageProducer>();
    
      static Map<String, MessageConsumer> getQueues = new ConcurrentHashMap<String, MessageConsumer>();
    
      static Log log=Log.getLogger(DBQueryHelper.class);
    
      static {
        connectionFactory = new ActiveMQConnectionFactory(
          ActiveMQConnection.DEFAULT_USER, 
          ActiveMQConnection.DEFAULT_PASSWORD, 
          "tcp://10.100.100.100:61616?wireFormat.maxInactivityDuration=0");
        try
        {
          connection = connectionFactory.createConnection();
    
          connection.start();
    
          session = connection.createSession(Boolean.FALSE.booleanValue(), 
            1);
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }
    
      static MessageProducer getMessageProducer(String name) {
        if (sendQueues.containsKey(name))
          return ((MessageProducer)sendQueues.get(name));
        try
        {
          Destination destination = session.createQueue(name);
          MessageProducer producer = session.createProducer(destination);
          sendQueues.put(name, producer);
          return producer;
        } catch (JMSException e) {
          e.printStackTrace();
        }
    
        return ((MessageProducer)sendQueues.get(name));
      }
    
      static MessageConsumer getMessageConsumer(String name) {
        if (getQueues.containsKey(name))
          return ((MessageConsumer)getQueues.get(name));
        try
        {
          Destination destination = session.createQueue(name);
          MessageConsumer consumer = session.createConsumer(destination);
          getQueues.put(name, consumer);
          return consumer;
        } catch (JMSException e) {
          e.printStackTrace();
        }
    
        return ((MessageConsumer)getQueues.get(name));
      }
    
      public static void sendMessage(String queue, String text) {
        try {
          TextMessage message = session.createTextMessage(text);
          getMessageProducer(queue).send(message);
         // log.info("sendMessage " + queue + "		" + text);
        }
        catch (JMSException e) {
          e.printStackTrace();
        }
      }
      
     
      
      public static String getMessage(String queue)
      {
        try {
          TextMessage message = (TextMessage)getMessageConsumer(queue).receive(10000L);
          if (message != null) 
          return message.getText();
        } catch (JMSException e) {
          e.printStackTrace();
        }
    	return null;
      }
    
      public static void close() {
        try {
          session.close();
        } catch (JMSException e) {
          e.printStackTrace();
        }
        try {
          connection.close();
        } catch (JMSException e) {
          e.printStackTrace();
        }
      }
    }

  • 相关阅读:
    作用域链及作用域面试题
    this在js中的作用
    dom对象
    作用域问题
    逻辑运算
    socket.io 的使用
    mongoDB 的使用
    使用 usb 调试的时候,连接上电脑没反应
    uni-app 的更新及碰到的问题
    WebSocket 的使用
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7084479.html
Copyright © 2011-2022 走看看