`
Technoboy
  • 浏览: 156735 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Spring JMS (1)

阅读更多
1. DestinationResolver
将给定的目的地地址解析为目的地实例。
Destination resolveDestinationName(Session session, String destinationName, boolean pubSubDomain)
			throws JMSException;

pubSubDomain--true表示发布/订阅模式,解析后的地址为Topic,false表示为点对点模式,解析后的地址为Queue。
看一下DestinationResolver的层次结构图


1.1 DynamicDestinationResolver
  DynamicDestinationResolver实现了DestinationResolver接口,并根据pubSubDomain的值,动态的创建目的地实例。
public Destination resolveDestinationName(Session session, String destinationName, boolean pubSubDomain)
			throws JMSException {

		Assert.notNull(session, "Session must not be null");
		Assert.notNull(destinationName, "Destination name must not be null");
		if (pubSubDomain) { //
			return resolveTopic(session, destinationName);
		}
		else {
			return resolveQueue(session, destinationName);
		}
	}

它是通过resolveTopic和resolveQueue创建目的地实例的:
protected Topic resolveTopic(Session session, String topicName) throws JMSException {
		if (session instanceof TopicSession) {
			// Cast to TopicSession: will work on both JMS 1.1 and 1.0.2
			return ((TopicSession) session).createTopic(topicName);
		}
		else {
			// Fall back to generic JMS Session: will only work on JMS 1.1
			return session.createTopic(topicName);
		}
	}

protected Queue resolveQueue(Session session, String queueName) throws JMSException {
		if (session instanceof QueueSession) {
			// Cast to QueueSession: will work on both JMS 1.1 and 1.0.2
			return ((QueueSession) session).createQueue(queueName);
		}
		else {
			// Fall back to generic JMS Session: will only work on JMS 1.1
			return session.createQueue(queueName);
		}
	}



1.2 CachingDestinationResolver
CachingDestinationResolver继承了DestinationResolver接口,并添加了缓存的功能。
void removeFromCache(String destinationName);
void clearCache(); //清空所有目的地缓存

当JMS地址失效时,removeFromCache方法被调用。当JMS provider失效时,clearCache方法被调用。

1.3 JndiDestinationResolver
  JndiDestinationResolver实现了CachingDestinationResolver接口,并继承了JndiLocatorSupport抽象类。如果在JMS provider中配置了静态目的地,那么JndiDestinationResolver通过JNDI查找的方式获得目的地实例。JndiDestinationResolver的cache属性用于指定是否对目的地实例进行缓存,默认值是true。JndiDestinationResolver的fallbackToDynamicDestination表示,如果目的地通过JNDI查找失败后,是否使用动态目的地,默认值为false。
private boolean cache = true;
private boolean fallbackToDynamicDestination = false;

JndiLocatorSupport类继承了JndiAccessor,JndiAccessor封装了JndiTemplate(提供了查找和绑定的一些方法)和JndiEnvironment(环境变量属性)

1.4 BeanFactoryDestinationResolver
  BeanFactoryDestinationResolver实现了DestinationResolver和BeanFactoryAware接口。有了BeanFactoryAware接口,我们就可以知道,它是通过给定的目的地名从BeanFactory中查找目的地实例。
public Destination resolveDestinationName(Session session, String destinationName, boolean pubSubDomain)
			throws JMSException {

		Assert.state(this.beanFactory != null, "BeanFactory is required");
		try {
			return (Destination) this.beanFactory.getBean(destinationName, Destination.class);
		}
		catch (BeansException ex) {
			throw new DestinationResolutionException(
					"Failed to look up Destinaton bean with name '" + destinationName + "'", ex);
		}
	}



  • 大小: 13 KB
1
0
分享到:
评论

相关推荐

    SpringJMS示例代码

    1. **SpringJMS简介** SpringJMS是Spring框架对JMS API的包装,它简化了生产者和消费者之间的消息通信。通过使用SpringJMS,开发者可以避免直接处理JMS API的复杂性,而是利用Spring的依赖注入和模板方法设计模式来...

    spring_jms

    Spring JMS(Java Message Service)是Spring框架的一部分,专门用于集成JMS消息传递系统,以实现异步通信和解耦应用程序组件。在这个入门级实例中,我们将探讨如何使用Maven、Spring和ActiveMQ来构建一个简单的...

    SpringJMS整合ActiveMQ

    详细内容: SpringJMS整合ActiveMQ.doc 详细说明文档 apache-activemq-5.8.0-bin.zip ActiveMQ安装包 JMSTest.rar MyEclipse8.5下web工程

    spring-jms入门

    Spring-JMS是Spring框架的一部分,专门用于处理Java消息服务(JMS)的集成。它提供了一个简单的API,使得开发者能够方便地在应用中使用消息传递功能。本文将深入探讨Spring-JMS的基础知识,包括它的核心概念、配置...

    springjms的demo

    Spring对JMS提供了很好的支持,可以通过JmsTemplate来方便地实现消息服务。本例通过activeMQ服务器模拟了消息的发送与接收。需要注意的是,activeMQ的运行依赖jdk的环境,而且对jdk的版本也有要求,我用的是jdk1.6+...

    Java网络编程--基于Spring的JMS编程

    1. **Spring JMS抽象层**:Spring提供了一个高级的API,它抽象了JMS的底层细节,使得开发者可以专注于业务逻辑而不是消息系统的复杂性。Spring的`JmsTemplate`是这个抽象层的核心,它简化了发送和接收消息的操作。 ...

    spring-jms 源代码包

    spring-jmsspring-jmsspring-jmsspring-jmsspring-jmsspring-jms

    spring-jms源码

    1. 消息的生产和消费:Spring JmsTemplate是如何将对象转换成消息并发送的,以及如何从消息中恢复对象。这涉及到MessageConverter的实现,如SimpleMessageConverter或Jackson2JsonMessageConverter,它们负责对象与...

    JMS整合Spring实例

    **JMS整合Spring实例** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的一种标准接口。它允许应用程序创建、发送、接收和读取消息,以此来解耦生产者和消费者。而Spring框架...

    spring-jms-4.3.4.RELEASE.zip

    1. **MessageTemplate**:这是Spring JMS提供的主要工具类,用于发送JMS消息。它允许开发者通过简单的API调用来创建并发送消息,无需直接处理JMS API的复杂性。 2. **MessageListenerContainer**:这是一个接口,...

    Spring JMS

    Spring JMS Spring JMS 是一个基于 Java 消息服务(JMS)的框架,它提供了一个简洁的方式来使用 JMS API。Spring JMS 框架提供了一个抽象层,简化了 JMS 的使用,使得开发者可以更容易地使用 JMS。 Spring JMS 的...

    jms整合spring工程

    1. **JMS基础概念** - **消息**:在JMS中,消息是数据传输的基本单位,包含要传递的信息。 - **消息队列(Message Queue)**:存储消息的临时容器,确保消息被正确地发送和接收。 - **生产者(Producer)**:创建...

    spring jms 整合 weblogic jms

    本人开发的spring jms项目,已经上线近一年了,这里是我项目jms配置文件,使用的是spring jms 整合weblogic jms。如果真的需要,请咨询我,并且附上我上传的这个配置文件,附近中没有带有这个文件,一律不作任何回答...

    spring整合jms+activemq

    在IT行业中,Spring框架是Java领域最广泛应用的轻量级框架之一,而JMS(Java Message Service)则是一种标准接口,用于在分布式系统中进行异步消息传递。ActivemQ是Apache软件基金会的一个项目,它实现了JMS规范,...

    Spring JMS 消息处理-基于JNDI

    1. **JMS核心概念**:首先,博客会介绍JMS的基本概念,包括Message、MessageProducer、MessageConsumer、Queue和Topic。理解这些概念对于有效地使用Spring JMS至关重要。 2. **Spring JMS配置**:接着,作者可能...

    Spring-JMS把企业消息处理变容易.doc

    Spring JMS 是一个强大的框架,它极大地简化了Java企业级消息处理。它通过提供一套抽象和模板类,使得开发者能够更加便捷地使用Java消息服务(JMS),并与各种JMS提供者,如IBM的WebSphere MQ进行集成。本文将深入...

    spring-jms-4.3.12.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-jms-4.3.12.RELEASE.jar; 赠送原API文档:spring-jms-4.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-jms-4.3.12.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-jms-4.3.12.RELEASE....

    Spring JMS使异步消息变得简单.doc

    【Spring JMS】是Spring框架中的一个模块,用于简化Java消息服务(JMS)的使用,使得异步消息处理变得更加简单和灵活。Spring JMS通过提供一个模板类,抽象了JMS API的底层细节,让开发者能够更加专注于消息的处理...

    spring jms 3.2

    spring jms jar包

    Spring发送接收JMS消息

    **Spring与JMS消息传递** 在Java世界中,Java Message Service (JMS) 是一个标准接口,用于在分布式环境中发送和接收消息。Spring框架提供了一种简单而强大的方式来集成JMS,使得开发者可以轻松地在应用中实现异步...

Global site tag (gtag.js) - Google Analytics