- 浏览: 1589854 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (289)
- java 语法基础 (51)
- spring (8)
- mvc struct /Ant --build.xml (8)
- SOA (0)
- oracle 9i/10g (23)
- sql server 2000-2005 (3)
- 数据库基础知识 (6)
- 设计模式与软件架构 (10)
- Hibernate 持久化 (9)
- J2SE/J2EE/J2ME/AJAX 技术 (8)
- JSF 技术 (3)
- JAVA 图形化 (0)
- JMS (40)
- Eclipse 3.2 IDE 开发技巧 (13)
- 项目处理方法集合 (2)
- html/jsp/javascript (2)
- Unix/Linux (9)
- j2me/ARM/windriver/嵌入式 (4)
- 电信科学 (8)
- jsp (1)
- c/c++ (1)
- LZW压缩算法(java) (2)
- Android (77)
- 版本管理git/svn (2)
最新评论
-
huihai:
有demo吗?
NamingStrategy实现动态表名映射 -
cangbaotu:
推荐给大家一些有用的爬虫源码:https://github.c ...
网络爬虫(源代码参考) -
tuspark:
除了.classpath文件以外,.project文件也应该了 ...
Eclipse .classpath文件浅谈 -
tuspark:
造成eclipse自动关闭的原因有很多,这里有很多介绍:ecl ...
eclipse 自动关闭 解决方案 -
DEMONU:
网上都是这些,这种文章。。。
ActiveMQ中的消息持久性
如前所述,JMS分两大类:PTP和Pub/Sub
主要的几个对象:ConnectionFactory、Connection、Destination、Session、MessageProducer、MessageConsumer
其相互关系如下图:
1.PTP:
简单回顾7个对象:QueueConnectionFactory、QuequeConnection、Queue、QueueSession、QueueSender、QueueReceiver、QueueBrowser
1) Sender
try {
//具体怎么得到就不写了,各个系统肯定都不一样,但终究都是通过jdni来获得
Context jndiContext = new InitialContext();
QueueConnectionFactory factory = jndiContext.lookup("**Factory");
Queue queue = jndiContext.lookup("**Queue");
QueueConnection connection = factory.createQueueConnection();
boolean transaction = true;
QueueSession session = connection.createQueueSession(transaction , Session.AUTO_ACKNOWLEDGE);
Message objMessage = session.createObjectMessage(); //或session.createTextMessage("...");
objMessage.setObject((Serializable)obj); //obj为要传输的对象
QueueSender sender = session.createSender(queue);
publisher.setTimeToLive(timeout); //long timeout = ...
connection.start();
sender.send(objMessage);
//or
/**
sender = session.createSender(null);
sender.send(queue, message);
*/
//如果不用了,就收拾干净
publisher.close();
session.close();
connection.close();
} catch (JMSException e) {
//TODO
} finally {
publisher = null;
session = null;
connection = null;
}
2) Receiver/Browser
a.主动接收,synchronously
try {
QueueReceiver receiver = session.createReceiver(queue);
receiver.receiveNoWait();
/**
QueueBrowser browser = session.createBrowser(queue); //QueueBrowser只会取消息,但不会取走消息
Enumeration elements = browser.getEnumeration();
while(elements.hasMoreElements) {
Message message = elements.nextElement();
...
}
*/
} catch (JMSException e) {
...
}
b.消息侦听,也是最主要的应用,asynchronously
try {
MessageListener myListener = new MyListener();
QueueReceiver receiver = session.createReceiver(queue);
receiver.setMessageListener(myListener);
connection.start();
} catch (JMSException e) {
...
}
public class MyListener impelments MessageListner {
public void onMessage(Message message) {
if(message instanceof TextMessage) {
...
} else if (message instanceof ObjectMessage) {
...
} else {
...
}
}
}
2.Pub/Sub:
简单回顾6个对象:TopicConnectionFactory、TopicConnection、Topic、TopicSession、TopicPublisher、TopicSubscriber
1) Publisher
try {
//具体怎么得到就不写了,各个系统肯定都不一样,但终究都是通过jdni来获得
Context jndiContext = new InitialContext();
TopicConnectionFactory factory = jndiContext.lookup("**Factory");
Topic topic = jndiContext.lookup("**Topic");
TopicConnection connection = factory.createTopicConnection();
TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); //false表示不使用事务
Message objMessage = session.createObjectMessage();
objMessage.setObject((Serializable)obj); //obj为要传输的对象
TopicPublisher publisher = session.createPublisher(topic);
publisher.setTimeToLive(100000);
connection.start();
publisher.publish(message);
//or
/**
publisher = session.createPublisher(null);
publiser.publish(topic, message);
*/
publisher.close();
session.close();
connection.close();
} catch (JMSException e) {
//TODO
}
2) Subscriber
a.主动接收,比如上面发送完后,接收回应消息,相当于同步接收了
try {
TopicSubscriber subscriber = session.createSubScriber(topic);
message = subscriber.receiver(timeout); //long timeout = ...
subscriber.close();
} catch (JMSException e) {
...
}
b.消息侦听,asynchronously
try {
...
TopicSubscriber subscriber = session.createSubScriber(topic);
MessageListener listener = new MyListener();
subscriber.setMessageListener(listener); //关键在于这个listener
connection.start();
} catch (JMSException e) {
...
}
MyListener实现同上
发表评论
-
基于jms使用ActiveMQ实现异步日志功能.消息持久到oracle 10g 数据库
2008-09-18 15:05 9937package askyaya.entity;import j ... -
activemq 重新连接的机制
2008-09-18 14:39 23223最近一个项目要用到ActiveMq,并且需要最大程度的保证消息 ... -
ActiveMQ stop inactivity read check
2008-09-17 16:01 10659You can do the following to fix ... -
WSAD环境下JMS异步通信全攻略 (3)
2008-09-11 14:18 32273.5 消息驱动的Bean 在前文讨论JMS消息接收处理逻 ... -
WSAD环境下JMS异步通信全攻略 (2)
2008-09-11 13:58 3775三、JMS P2P编程 在JMS P2P通信方式中,发送程 ... -
WSAD环境下JMS异步通信全攻略 (1)
2008-09-11 13:57 4715一、JMS基本概念 1.1 P2P通信 1.2 Pub ... -
topicpublisher (jms)
2008-09-10 18:55 2923目的地类型JNDI名字连接工厂类型Topic/Queuejav ... -
ProducerTool /MessageBroker /getConnectionFactoryF
2008-09-10 18:12 2481lib: jms1.1.jar activemq-all-5. ... -
activemq例子代码 发送BytesMessage消息
2008-09-10 13:55 18384import javax.jms.Connection; im ... -
ActiveMQ in Action(7)
2008-09-10 13:44 3950ActiveMQ in Action(7) 关键字 ... -
ActiveMQ in Action(6)
2008-09-10 13:43 3734ActiveMQ in Action(6) 关键字: acti ... -
ActiveMQ in Action(5)
2008-09-10 13:42 3928ActiveMQ in Action(5) 关键字: acti ... -
ActiveMQ in Action(4)
2008-09-10 13:40 3478ActiveMQ in Action(4) 关键字: acti ... -
ActiveMQ in Action(3)
2008-09-10 13:39 3677ActiveMQ in Action(3) 关键字: acti ... -
ActiveMQ in Action(2)
2008-09-10 13:38 4209ActiveMQ in Action(2) 关键字: acti ... -
ActiveMQ in Action(1)
2008-09-10 13:37 5831ActiveMQ in Action(1) 关键字: acti ... -
为ActiveMQ服务器添加简单验证机制
2008-09-09 23:48 4193为ActiveMQ服务器添加简单验证机制 关键字: Java, ... -
Sender/receiver 消息
2008-09-09 20:28 2125Sender:import java.io.BufferedR ... -
activema.xml 配置
2008-09-09 17:44 3815/***作者:andyao,email:andyaoy@gma ... -
JMX 与系统管理
2008-09-08 10:52 1863Java SE 6 新特性: JMX 与系统管理 ...
相关推荐
在"JMS sub/pub实现聊天系统"中,我们主要探讨的是如何利用JMS的发布/订阅(Publish/Subscribe)模型来构建一个聊天系统。 在JMS中,有两种消息传递模型:点对点(Point-to-Point)和发布/订阅(Publish/Subscribe...
在ActiveMQ中,有两种主要的消息处理模式:点对点(Point-to-Point,简称PTP)和发布/订阅(Publish/Subscribe,简称PUB/SUB)。本文将深入探讨这两种模式及其在SpringBoot应用中的实现。 首先,点对点(PTP)模式...
JMS提供了两个主要的消息域:点对点(PTP)和发布/订阅(Pub/Sub)。 1. **点对点(PTP)**:在此模式下,消息发送给特定的目标队列,每个消息会被一个消费者接收并消费。一旦消息被消费,就从队列中移除。 - **队列...
2. **消息模型**:JMS支持两种消息模型——点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。在点对点模型中,消息从一个队列(Queue)中发送到另一个队列,每个消息仅被一个消费者接收。...
1. **消息模型**:JMS支持两种消息模型——点对点(Point-to-Point,PTP)和发布/订阅(Publish/Subscribe,Pub/Sub)。在点对点模型中,消息由一个生产者发送到一个队列,然后由一个消费者接收;而在发布/订阅模型...
- **消息模型**:JMS支持两种消息模型,点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。 - P2P模型中,消息从一个生产者发送到一个队列,然后由一个或多个消费者消费。消息一旦被消费...
SpringBoot集成ActiveMQ,ActiveMQ支持队列和主题两种消息发送方式,选择发送方式可以在SpringBoot的配置文件中通过参数spring.jms.pub-sub-domain来控制,值为false表示是队列,值为true表示是主题。
在JMS中,有两种主要的消息模式:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)模式。这两种模式各有特点,适用于不同的场景。 1. 点对点(Point-to-Point,P2P)模式: 在P2P模式下,...
JMS定义了两种基本的消息传递模型:点对点(Point-to-Point, P2P)和发布/订阅(Publish/Subscribe, Pub/Sub)。 ##### 1. 点对点(P2P) - **消息队列(Queue)**:消息队列是P2P模型的核心组件,每个消息都发送...
JMS还定义了两种消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。 1. **点对点模型**:在P2P模型中,消息被发送到一个称为队列(Queue)的特定目的地。每个消息只有一个消费者...
它提供了同步和异步发送消息的方法,支持点对点(P2P)和发布/订阅(Pub/Sub)模型。 2. **MessageListener容器**: Spring提供了两种类型的容器——SimpleMessageListenerContainer和...
在JMS-1.1规范中,主要有两种类型的消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。点对点模型通过队列(Queue)实现,每个消息只有一个消费者;而发布/订阅模型通过主题...
Spring JMS支持各种特性,如点对点(P2P)和发布/订阅(Pub/Sub)消息模型,事务管理,以及通过JCA(Java Connector Architecture)适配器集成企业信息系统的功能。 在Spring应用中,开发者通常会在XML配置文件中...
2. **消息模型**:JMS支持两种消息传递模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。在P2P模型中,每个消息仅由一个消费者接收,通常通过队列实现;在Pub/Sub模型中,消息可以被...
- **消息服务体系结构**:JMS定义了两种主要的消息传送模型——点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)模型。 - **消息传送模型对照表**:PTP模式使用Queue,消息只能被一个消费...
JMS支持两种消息模式:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。 EJB3是EJB规范的一个版本,简化了企业级开发,引入了注解驱动和POJO(Plain Old Java Object)概念,降低了开发...
JMS支持两种消息模型:点对点(Point-to-Point, P2P)和发布/订阅(Publish/Subscribe, Pub/Sub)。 - **点对点模型**:在这种模型中,消息发送者(生产者)将消息发送到一个特定的目标队列中,消息消费者(消费者)...
- JMS 支持两种主要的消息模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。 - 主要组件包括:消息生产者、消息消费者、消息代理(如消息队列或主题)、消息和目的地。 2. **...
JMS提供两种消息传递模式:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。 【文件内容详解】: 1. **JMS API**:`javax.jms_1.1.0.jar`包含JMS API的所有接口和类,如`Message`、`...