文档章节

JMS

不道归来
 不道归来
发布于 2014/09/22 15:55
字数 526
阅读 134
收藏 1

  Most of the communications between components that you have seen so far are synchronous: one class calls another, a managed bean invokes an EJB, which calls an entity, and so on. 

   Message-oriented middleware (MOM) is software (a provider) that enables asynchronous 

messages between heterogeneous systems. It can be seen as a buffer between systems that 

produce and consume messages at their own pace

    JMS is a standard Java API that allows applications to create, send, receive, and read messages 

asynchronously

--

就跟我们在计算机系统中常提到的生产者与消费者一样.消费者,生产者不需要互相知道对方的存在.as long as the sender and receiver agree on the message format and the intermediate 

SUBJECT:

    how to connect to a provider, create different types of messages, send them to 

queues or topics, and receive them all or filter them with selectors


两种模式:

p2p communication

pub-sub communication

不同的模式下 destination connectionFactory分别有不同的支持,实现不同的接口,由不同的模式下的connectionFactory 分别可以创建不同模式下的 connection ,session......

consumer

provider

administered object -->:

Destination

javax.jms.Queue objects used for P2P communication

 • javax.jms.Topic objects used for pub-sub communication

ConnectionFactory (可注入)➥

 • javax.jms.ConnectionFactoryis an interface than can be used for both P2P and pubsub communications.

 • javax.jms.QueueConnectionFactoryis an interface that extends ConnectionFactoryand 

is used for P2P communication.

 • javax.jms.TopicConnectionFactoryis an interface that extends ConnectionFactoryand is used for pub-sub communication

QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) ctx.lookup("QConnFactory");

TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) ctx.lookup("TConnFactory");

ConnectionFactory ConnectionFactory = (QueueConnectionFactory) ctx.lookup("GenericConnFactory");

    connection 线程安全的,可共享 ➥

    Connection connection = connFactory.createConnection();

    QueueConnection connection = queueConnFactory.createQueueConnection();

    TopicConnection connection = topicConnFactory.createTopicConnection();

        session 单线程 ,支持事务/非事务➥

            Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);

            //true:支持事务,AUTO_ACKNOWLEDGE,消息被接收后会自动通知.

            Message :分装消息,以三部分发送到destination

             //Structure of a JMS message,太长,不写了.

            Messageproducer

            发送message.

            pub-sub model-->publisher

            P2P-->sender

            MessageConsumer

            可以选择是异步或者同步的接收消息.

            异步的话需要实现MessageListener 接口,回调方法onMessage.

            Selectors

            包含过滤条件的字符串(based on a subset of the SQL92),过滤消息.

            在message的header中设置一些属性:

            message.setIntProperty("orderAmount", 1530);

            接收:

            session.createConsumer(topic, "JMSPriority < 6");


在容器中使用MessageDriverBean中开发JMS还是很简单的.




--<<beginning javaee6 with glassFish 3>>

--基于JMS 和MOM 的信息交换系统研究

-----------------------------------------------------------

Using Distributed Destinations:

http://docs.oracle.com/cd/E13222_01/wls/docs100/jms/dds.html  

http://www.javalobby.org/articles/distributed-jms/ 

 在注解中配置JNDI属性用到的:

http://docs.oracle.com/cd/E18930_01/html/821-2416/gbtvg.html#gkkwq 


© 著作权归作者所有

下一篇: Spring AOP
不道归来
粉丝 2
博文 119
码字总数 15736
作品 0
南京
后端工程师
私信 提问
tomcat 5.5 部署项目报错 关于Filter的错误。。

我在tomcat7.0部署没不报错,但是再tomcat5.5就会报错。。 listener.ContextListener UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter logLevel WARN UrlRewriteFilte......

庄泽锐
2014/03/06
1K
5
oscache缓存的页面为乱码

项目用的oscache,用的web.xml配置 CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8   forceEncoding   true    CharacterEncodingF......

kkli
2014/03/13
398
1
Tomcat 容器与servlet的交互原理

Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器...

watermelon11
02/25
169
0
Servlet 生命周期、工作原理

Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。 init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet 对象。可以配...

ArlenXu
2015/01/24
140
0
Servlet生命周期与工作原理

Servlet生命周期分为三个阶段:   1,初始化阶段 调用init()方法   2,响应客户请求阶段  调用service()方法   3,终止阶段  调用destroy()方法 Servlet初始化阶段:   在下列时...

№贪↗恋♂
2012/08/08
158
0

没有更多内容

加载失败,请刷新页面

加载更多

500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
8
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部