- 浏览: 7339299 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在发布/订阅(pub /分)的产品或应用软件,客户端的地址为主题的消息。 Publishers and subscribers are generally anonymous and may dynamically publish or subscribe to the content hierarchy. 发布服务器和订阅,一般不记名,可以动态地发布或订阅内容的层次结构。 The system takes care of distributing the messages arriving from a topic's multiple publishers to its multiple subscribers. 该系统以照顾用户分配多个消息的多个出版商其到达一个主题。 Topics retain messages only as long as it takes to distribute them to current subscribers. 消息只保留主题,只要他们需要分发到当前用户。
Pub/sub messaging has the following characteristics. 发布/订阅消息有以下几个特点。
- Each message may have multiple consumers. 每个消息可以有多个消费者。
- Publishers and subscribers have a timing dependency.发布服务器和订阅有时间依赖性。 A client that subscribes to a topic can consume only messages published after the client has created a subscription, and the subscriber must continue to be active in order for it to consume messages.一个客户端订阅一个主题可以使用客户端后发表的订阅只创造了一个消息,订阅者必须继续,以便它使用消息活跃。
The JMS API relaxes this timing dependency to some extent by allowing clients to create durable subscriptions . JMS API的放松这个时间依赖性在一定程度上允许客户创建持久订阅 。 Durable subscriptions can receive messages sent while the subscribers are not active. Durable subscriptions provide the flexibility and reliability of queues but still allow clients to send messages to many recipients. 长期订阅可以接收用户发送的消息,而不是积极的。持久订阅队列提供灵活性和可靠性,但仍允许客户端发送邮件给多个收件人。
在JBOSS中发布订阅模式的开发:
在JBOSS_HOME 的server\default\deploy
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mail-service.xml 62350 2007-04-15 16:50:12Z dimitris@jboss.org $ -->
<server>
<!-- ==================================================================== -->
<!-- Mail Connection Factory -->
<!-- ==================================================================== -->
<mbean code="org.jboss.mq.server.jmx.Topic"
name="jboss.mq.destination:service=Topic,name=chatTopic">
<attribute name="JNDIName">topic/chatTopic</attribute>
<depends optional-attribute-name="DestinationManager" >jboss.mq:service=DestinationManager</depends>
</mbean>
</server>
发布订阅模式的中服务端的信息:
package com.easyway.jboss.jms.ptp.service; import java.util.Properties; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.TextMessage; import javax.jms.Topic; import javax.jms.TopicConnection; import javax.jms.TopicConnectionFactory; import javax.jms.TopicSession; import javax.naming.Context; import javax.naming.InitialContext; /** * 队列消息的发送者 * 采用JMS点对点的模式 * @author longgangbai * */ public class TopicSender { /** * * @param args */ public static void main(String[] args) { TopicConnection conn=null; TopicSession session=null; try { //得到一个JNDI初始化上下文 Properties props=new Properties(); //设置 props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.setProperty(Context.PROVIDER_URL, "localhost:1099"); props.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); InitialContext ctx=new InitialContext(props); //根据上下文查找一个连接工厂TopicConnectionFactory/QueueConnectionFactory (有了两种连接工厂, //根绝topic、queue来是哟偶那个相应的类型),该连接工厂是有JMS提供的,不需要我们自己创建,每一个 //厂商为他绑定一个全局的JNDI,我们功过JNDI便可获取它。 TopicConnectionFactory factory=(TopicConnectionFactory)ctx.lookup("ConnectionFactory"); //从连接工厂 中得到一个连接(Connect 的类型有两种,TopicConnection、QueueConnection) conn=factory.createTopicConnection(); //通过连接来建立一个会话(Session) //建立一个不需要事物的并且能自动确认消息已接收的会话 session=conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE); //查找目的地(目的地的类型有两种:Topic、Queue) Destination destination =(Topic)ctx.lookup("topic/chatTopic"); //根绝会话以及目的地建立消息生产者MessageProducter(QueueSender 和TopicPublisher都扩展自MessageProducer接口) MessageProducer producer=session.createProducer(destination); TextMessage msg=session.createTextMessage("hi ,longgangbai ,this is jboss jms MDB message"); producer.send(msg); System.out.println("发送消息成功!"); } catch (Exception e) { e.printStackTrace(); }finally{ try { session.close(); conn.close(); } catch (JMSException e2) { e2.printStackTrace(); } } } }
接受消息的代码如下:
package com.easyway.jboss.jms.ptp.service; import java.util.Properties; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.TextMessage; import javax.jms.Topic; import javax.jms.TopicConnection; import javax.jms.TopicConnectionFactory; import javax.jms.TopicSession; import javax.naming.Context; import javax.naming.InitialContext; /** * 队列消息的发送者 * 采用JMS点对点的模式 * @author longgangbai * */ public class TopicReceive { /** * * @param args */ public static void main(String[] args) { TopicConnection conn=null; TopicSession session=null; try { //得到一个JNDI初始化上下文 Properties props=new Properties(); //设置 props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.setProperty(Context.PROVIDER_URL, "localhost:1099"); props.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); InitialContext ctx=new InitialContext(props); //根据上下文查找一个连接工厂TopicConnectionFactory/QueueConnectionFactory (有了两种连接工厂, //根绝topic、queue来是哟偶那个相应的类型),该连接工厂是有JMS提供的,不需要我们自己创建,每一个 //厂商为他绑定一个全局的JNDI,我们功过JNDI便可获取它。 TopicConnectionFactory factory=(TopicConnectionFactory)ctx.lookup("ConnectionFactory"); //从连接工厂 中得到一个连接(Connect 的类型有两种,TopicConnection、QueueConnection) conn=factory.createTopicConnection(); //通过连接来建立一个会话(Session) //建立一个不需要事物的并且能自动确认消息已接收的会话 session=conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE); //查找目的地(目的地的类型有两种:Topic、Queue) Destination destination =(Topic)ctx.lookup("topic/chatTopic"); //根绝会话以及目的地建立消息生产者MessageProducter(QueueSender 和TopicPublisher都扩展自MessageProducer接口) MessageConsumer consumer=session.createConsumer(destination); //DisplayMessage ml = new DisplayMessage(); //consumer.setMessageListener(ml); System.out.println("开始接受消息"); conn.start();//备注如果没有对象将一直处于wait()的状态,直到接受到对象 TextMessage msg = (TextMessage) consumer.receive(); String message = msg.getText(); System.out.println("message="+message); System.out.println("接送消息成功!"); } catch (Exception e) { e.printStackTrace(); }finally{ try { session.close(); conn.close(); } catch (JMSException e2) { e2.printStackTrace(); } } } }
发表评论
-
【转】Django resources
2014-01-23 14:35 10828Django resources This page li ... -
使用国内镜像源来加速python pypi包的安装
2014-01-16 11:16 197843pipy国内镜像目前有: http://pypi.d ... -
[转 ]vagrant使用简介
2014-01-10 13:53 257531> 简介: vagrant提供了易于配置,重复性 ... -
[转]在Java中调用Python
2014-01-07 13:08 9220在执行之前都需要把jython对应的包加载进去,这个是必须的 ... -
[转]Eclipse配置PyDev插件
2014-01-02 14:25 2840安装python解释器 安装PyDev: 首 ... -
RestFuse的研究(五) Http请求的封装
2014-06-14 15:50 3648在RestFuse中封装了Http请 ... -
RestFuse的研究(四) Junit的Statement的分析
2013-12-06 11:46 1674在RestFuse提供了多种单 ... -
RestFuse的研究(三) Junit的Rule的使用和分析
2013-12-06 11:01 2239在junit中定义一些可以公用的规则(R ... -
RestFuse的研究(二) Junit的Runner的分类和模式
2013-12-06 10:40 1605在Junit4中的调用JunitCore可以采 ... -
RestFuse的研究(一) HttpJunitRunner的实现
2013-12-06 10:11 1748在RestFuse是一种针对Rest We ... -
[转]An open-source JUnit extension to test HTTP/REST APIs
2013-12-06 09:57 1101http://developer.eclipsesource ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3356TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51588文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14199最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8695TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2715TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2813TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2456TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2785TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2703TestNG官方网站: http://testng.or ...
相关推荐
本教程将带你逐步了解如何利用Tomcat、Spring和JMS(Java Message Service)构建一个简单的异步消息传递入门实例。 首先,让我们来理解一下核心组件: 1. **Tomcat**:这是一个流行的开源Java Servlet容器,用于...
Java消息服务(JMS)是Java平台上用于异步通信的标准API。它允许应用程序通过消息传递在分布式系统中进行通信,从而实现解耦和提高...通过截图和教程,WSAD提供了一个全面的平台,帮助开发者理解和实现JMS异步通信。
在IT行业中,Spring框架是Java应用开发的基石,它提供了丰富的功能来简化应用程序的构建,而JMS(Java Message Service)则是处理异步通信的一种标准API。Tomcat作为轻量级的应用服务器,常用于部署Spring应用。在这...
Spring JMS通过提供`JmsTemplate`类,将这些繁琐的步骤封装起来,开发者只需要调用几个简单的API就可以发送和接收消息,极大地提高了开发效率。 使用Spring JMS的一个关键优势在于其灵活性。`JmsTemplate`允许你...
在 IT 领域,特别是在 Web 应用开发中,异步消息传递是一种提高系统效率和响应性的重要技术。传统的同步处理方式可能会导致用户等待时间较长,尤其是在处理复杂的业务逻辑或者需要执行耗时操作时。Spring 框架提供了...
在EASERVER中实现异步消息,开发者需要配置JMS连接器,创建消息代理(Message Broker)和目的地(如队列或主题),并在应用程序中编写代码来发送和接收消息。发送端通常会创建一个消息对象,设置消息属性,然后通过...
总的来说,J2EE的异步消息机制通过JMS提供了强大的工具,允许企业应用在高并发、高负载的环境中实现高效、可靠的通信,增强了系统的灵活性和稳定性。开发者利用这些机制可以构建出能够应对复杂业务场景的企业级解决...
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准API。它允许应用程序创建、发送、接收和读取消息。在Java应用环境中,JMS扮演着至关重要的角色,尤其在分布式系统和企业...
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的一种标准API。它提供了一种可靠的消息传递机制,使得应用程序可以在分布式环境中发送、接收和管理消息。JMS允许应用程序在不...
2. JMS(Java Message Service)的集成:在WebLogic服务器中,异步消息通常是通过Java消息服务(JMS)来实现的。JMS是一种消息传递的标准,提供了创建、发送、接收和读取消息的API。WebLogic提供了JMS服务,使得...
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它提供了一种可靠的消息传递机制,使得应用程序可以在分布式环境中交换信息。在这个主题中,我们将深入探讨JMS消息...
在异步消息处理方面,Spring提供了JMS(Java Message Service)模板,使得开发者能够方便地发送和接收消息。 ActiveMQ则是Apache软件基金会的一个开源项目,它是JMS的实现,提供了一个高性能、可靠的、跨语言的消息...
Java 消息服务(JMS,Java Message Service)是一种用于在分布式系统中进行异步数据交换的API,它为应用程序提供了标准的接口来发送和接收消息。JMS规范由JavaSoft(现为Oracle公司的一部分)制定,目的是促进不同...
在IT行业中,Spring框架是Java应用开发中的一个关键组件,尤其在企业级应用中,它提供了丰富的功能,如依赖注入、AOP(面向切面编程)以及与各种服务的集成,包括消息传递系统。WebLogic Server是Oracle公司的一款...
虽然JMS是为Java设计的,但通过适配器或开源库,C#开发者也能利用其功能,实现分布式系统中的异步通信和消息传递。 **一、JMS简介** JMS是一种API,用于在不同的应用程序之间发送和接收消息。它提供了标准化的接口...
### 消息中间件与JMS消息服务详解 #### 一、引言 随着分布式系统的规模和复杂度不断增加,传统的远程过程调用(RPC)中间件技术...对于开发人员来说,理解和掌握JMS接口和消息模型是构建高效、可靠的企业级应用的基础。
在WebLogic中整合JMS(Java Message Service)和Spring框架,可以实现异步消息处理,提高系统的响应速度和并发处理能力。JMS 是一个为Java平台设计的消息中间件接口,它允许应用程序通过消息传递进行通信,而Spring...
在IT行业中,JMS(Java Message Service)是Java平台上的一个标准接口,它定义了用于在分布式环境中交换异步消息的API。JMS允许应用程序创建、发送、接收和读取消息,有效地支持企业级应用之间的通信。在J2EE(Java ...
通过JMS,应用可以在异步和解耦的方式下进行通信,提高了系统的可靠性和可扩展性。在Spring框架中,我们可以使用`JMSTemplate`来简化JMS操作,包括发送和接收消息。 集成Spring和WebLogic 9.2发送JMS消息的步骤如下...