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(); } }
activemq p2p方式的更多相关文章
- ActiveMQ持久化方式(转)
消息持久性对于可靠消息传递来说应该是一种比较好的方法,有了消息持久化,即使发送者和接受者不是同时在线或者消息中心在发送者发送消息后宕机了,在消息 中心重新启动后仍然可以将消息发送出去,如果把这种持久化 ...
- ActiveMQ持久化方式
ActiveMQ持久化方式 发表于8个月前(2014-09-04 15:55) 阅读(686) | 评论(0) 17人收藏此文章, 我要收藏 赞1 慕课网,程序员升职加薪神器,点击免费学习 摘要 ...
- ActiveMQ入门之四--ActiveMQ持久化方式
消息持久性对于可靠消息传递来说应该是一种比较好的方法,有了消息持久化,即使发送者和接受者不是同时在线或者消息中心在发送者发送消息后宕机了,在消息中心重新启动后仍然可以将消息发送出去,如果把这种持久化和 ...
- ActiveMQ P2P版的HelloWorld
1.2 JMS应用程序接口 ConnectionFactory: 用户用来创建到JMS提供者的连接的被管对象.JMS客户通过可移植的接口访问连接,这样当下层的实现改变时,代码不需要进行修改. 管理员 ...
- ActiveMQ P2P模型 观察者消费
生餐者: package clc.active.listener; import org.apache.activemq.ActiveMQConnectionFactory; import org.t ...
- ActiveMQ安装与使用
一 .安装运行ActiveMQ: 1.下载activemq wget http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apa ...
- .Net平台下ActiveMQ入门实例
1.ActiveMQ简介 先分析这么一个场景:当我们在网站上购物时,必须经过,下订单.发票创建.付款处理.订单履行.航运等.但是,当用户下单后,立即跳转到“感谢那您的订单” 页面.不仅如此,若果没有延 ...
- .Net平台下ActiveMQ入门实例(转)
1.ActiveMQ简介 先分析这么一个场景:当我们在网站上购物时,必须经过,下订单.发票创建.付款处理.订单履行.航运等.但是,当用户下单后,立即跳转到"感谢那您的订单" 页面. ...
- 学习ActiveMQ(八):activemq消息的持久化
1. 持久化方式介绍前面我们也简单提到了activemq提供的插件式的消息存储,在这里再提一下,主要有以下几种方式: AMQ消息存储-基于文件的存储方式,是activemq开始的版本默认的消息存储方式 ...
随机推荐
- @Entity设置OneToMany
Hibernate设置bean映射数据库的方式有配置模式与注解模式,下面通过注解模式配置OneToMany @Entity @Table(name="csdnbbs_sys_catalog& ...
- CQRS学习——Dpfb以及其他[引]
[Dpfb的起名源自:Ddd Project For Beginer,这个Beginer自然就是博主我自己了.请大家在知晓这是一个入门项目的事实上,怀着对入门者表示理解的心情阅读本系列.不胜感激.] ...
- HTTP协议的几个重要概念
转自:http://ice-cream.iteye.com/blog/77549 1.连接(Connection):一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间. 2.消息(Messag ...
- [转载]中国天气网API
最近在做个网站要用到天气网的api,在网上找了些参考资料,这篇文章对天气网api的介绍比较详细,所以转载之,谢谢原作者的辛勤劳动和奉献精神. 原文地址:http://g.kehou.com/t1033 ...
- BZOJ 1030 文本生成器
很老的题目了,很早以前学AC自动机的时候就A过一次 今天算是复习啦 我们可以把问题转化成一个给定字符串都没出现的字符串有多少个 我们建立AC自动机,设dp[i][j]表示走了i步当前在j节点上 在DP ...
- javaweb学习总结(四十六)——Filter(过滤器)常见应用
一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import ja ...
- Unable to resolve target 'android-8'类似错误的解决办法
导入android项目出现:出现Unable to resolve target 'android-8'错误及其他的一些解决办法 - 为梦想而飞 - 博客频道 - CSDN.NEThttp://blo ...
- vimrc for mac
" Configuration file for vim set modelines=0 " CVE-2007-2438 " Normally we use vim-ex ...
- 研究系统IO和glib IO的关系
PS:这里的缓冲与非缓冲的区别是相对于用户进程,下文的“非缓冲文件系统”指用户的程序没有缓冲区,不要误解为系统没有缓冲区. 1.缓冲文件系统缓 冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的 ...
- python学习笔记八--动态类型
一.变量,对象,引用: 1. 变量: 2. 对象:均包含了一个头部信息,有以下两部分内容 a.对象的数据类型, b.引用计数器:纪录当前引用货指向该对象的数量,一旦计数器被清零,该对象的内存空间就会被 ...