activemq p2p方式

package ch02.chat;

import java.io.Serializable;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueSession;
import javax.jms.Session;
/*本工具封装了*/ import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber; import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory; public class JMSQueue {
TopicConnectionFactory connectionFactory;
// Connection :JMS 客户端到JMS Provider 的连接
TopicConnection connection = null;
//用来发布的会话 //TopicSession proSession = null;
//2一个订阅会话
//TopicSession conSession = null;
Session session=null; //主题发布者
MessageProducer producer=null;
//主题
MessageConsumer consumer=null; // Destination :消息的目的地;消息发送给谁.
Destination destination=null;
// MessageProducer:消息发送者 //默认构造函数,默认的连接activemq,可以写多个构造函数
public JMSQueue()
{
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try {
connection= connectionFactory.createTopicConnection();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.start();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
public JMSQueue(String user,String name)
{
connectionFactory = new ActiveMQConnectionFactory(
user,
name,
"tcp://localhost:61616");
try {
connection= connectionFactory.createTopicConnection();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.start();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } //设计session类型
public void setSession() throws JMSException
{
session= connection.createSession(false, Session.AUTO_ACKNOWLEDGE); }
//设置为原子类型
public void setAtomicSession() throws JMSException
{
session= connection.createSession(true, Session.AUTO_ACKNOWLEDGE); } //此处先固定消息为String类型
public void writeMessage(String t,String message,int priority )
{
try { producer=session.createProducer(session.createQueue(t)); //使用message构造TextMessage
TextMessage text=session.createTextMessage();
text.setJMSPriority(priority);
text.setText(message);
producer.send(text); } catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//创建发布会话应该是可以配置的,此处先固定 } public void writeMessage(String t,Object o)
{
try { producer=session.createProducer(session.createQueue(t)); //使用message构造TextMessage
ObjectMessage text=session.createObjectMessage();
text.setObject((Serializable) o);
producer.send(text); } catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//创建发布会话应该是可以配置的,此处先固定 } //使用某个Message监听器来监听某个Topic
public void receiveMsg(String c,MessageListener ml)
{
try { Queue t=session.createQueue(c);
consumer=session.createConsumer(t);
//设置过来的监视器
consumer.setMessageListener(ml); } catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
public Message receiveMsg(String c)
{
try { consumer=session.createConsumer(session.createQueue(c));
//设置过来的监视器
Message message=consumer.receive();
return message; } catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//同步接收信息 public void commit() throws JMSException
{
session.commit();
}
public void rollback() throws JMSException
{
session.rollback();
}
public void close() throws JMSException
{
if(connection!=null) connection.close();
if(session!=null) session.close();
if(producer!=null) session.close();
if(consumer!=null) consumer.close(); } }
上一篇:LG1198/BZOJ1012 「JSOI2008」最大数 线段树+离线


下一篇:UVA 1401 Remember the Word