- 浏览: 7257057 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 10719Django resources This page li ... -
使用国内镜像源来加速python pypi包的安装
2014-01-16 11:16 197579pipy国内镜像目前有: http://pypi.d ... -
[转 ]vagrant使用简介
2014-01-10 13:53 256191> 简介: vagrant提供了易于配置,重复性 ... -
[转]在Java中调用Python
2014-01-07 13:08 9144在执行之前都需要把jython对应的包加载进去,这个是必须的 ... -
[转]Eclipse配置PyDev插件
2014-01-02 14:25 2785安装python解释器 安装PyDev: 首 ... -
RestFuse的研究(五) Http请求的封装
2014-06-14 15:50 3521在RestFuse中封装了Http请 ... -
RestFuse的研究(四) Junit的Statement的分析
2013-12-06 11:46 1610在RestFuse提供了多种单 ... -
RestFuse的研究(三) Junit的Rule的使用和分析
2013-12-06 11:01 2194在junit中定义一些可以公用的规则(R ... -
RestFuse的研究(二) Junit的Runner的分类和模式
2013-12-06 10:40 1561在Junit4中的调用JunitCore可以采 ... -
RestFuse的研究(一) HttpJunitRunner的实现
2013-12-06 10:11 1698在RestFuse是一种针对Rest We ... -
[转]An open-source JUnit extension to test HTTP/REST APIs
2013-12-06 09:57 1055http://developer.eclipsesource ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3291TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51456文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14000最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8630TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2662TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2762TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2402TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2719TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2647TestNG官方网站: http://testng.or ...
相关推荐
北京火龙果软件工程技术中心异步进程通信是面向...它提供的模板机制隐藏了典型的JMS实现的细节,这样开发人员可以集中精力放在处理消息的实际工作中,而不用担心如何去创建,访问或清除JMS资源。本文将对SpringJMSAP
java消息服务(Java Message Service)即JMS,是一个Java平台中关于面向消息中间件的api,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信 什么是AMQP AMQP(advanced message queuing protocol)是一...
#资源达人分享计划#
异步消息传递已证明是成功实现企业集成的最佳方案。但是,为了构建和部署消息传递解决方案,开发人员要面对大量的问题。本书提供了意义非凡的65种模式,并用真实的解决方案演示了消息传递的强大功能,可以帮助你为...
第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...
异步消息传递已证明是成功实现企业集成的最佳方案。但是,为了构建和部署消息传递解决方案,开发人员要面对大量的问题。本书提供了意义非凡的65种模式,并用真实的解决方案演示了消息传递的强大功能,可以帮助你为...
java 网络高级编程(PDF) 介绍了网络进程通信的主要技术,Java有关的Web技术,异步消息服务技术JMS和Java Mail技术,Java安全体系结构、密钥、消息摘要、数字签名等技术 Java 极限编程(PDG) 简短介绍极限编程文法及...
包括:独有消费者、消息异步分发、消息优先级、管理持久化消息、消息分组、 消息选择器、消息重递策略、慢消费者处理等 n 十三:杂项技术 包括:监控和管理Broker、集成ActiveMQ和Tomcat、什么时候使用ActiveMQ等 n ...
在业务逻辑的异步处理,系统解耦,分布式通信以及控制高并发的场景下,消息队列有着广泛的应用。本项目基于Spring的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ添加和读取消息的功能。并...
涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...
涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...
W-server:负责接收微信消息,并且异步发送消息到jms队列,注意暴露地址需要80端口(微信api要求)。 Jms:负责消息异步处理和缓存。 webApp:具体的业务组件,可以使用同一个w-server配置不同的queue,实现多个业务...
使用JPA访问数据库 第12章 整合其他ORM框架 第4篇 业务层应用 第13章 任务调度和异步执行器 第14章 JavaMail发送邮件 第15章 在Spring中使用JMS 第16章 在Spring中开发Web Service 第17章 使用...
1.3 JMS Client消息交互图 62 1.5解决方案 62 2.JMS传输模式 64 3. JMS Client For NC6.0 65 4 大文件传输模式 85 附录 86 1发送结果错误码 86 2 K系统自定义项目档案样本defdoc.xml 89 常见问题 90
涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...
加密类注册 56 第七章 扩展 57 第八章 JMS及大文件传输模式 59 1信息交换平台异步通信解决方案 59 1.1信息交换平台现状及存在的问题 59 1.2需求分析 59 1.3 JMS简介 60 1.3 JMS Client消息交互图 62 1.5解决方案 62...
AMQP作为比JMS更加高级的消息协议,支持更多的消息路由和消息模式。 包含的特性如下: 如上图,生产者消费者模型:添加了一个队列,并创建了两个消费者用于监听队列消息,我们发现,当有消息到达时,两个消费者会...
Eclipse Communication Framework (ECF) 是一个能够在Eclipse平台上建立交流应用的项目。这个Framework为human-to-... 开发底层通信的开发者,例如开发标准或者是私有通信协议(SIP/SIMPLE, XMPP, JMS, JXTA等)。