`
stevezheng
  • 浏览: 79926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

香锅之activemq(不爽), ibatis和timer

    博客分类:
  • java
阅读更多

上回说到menifest.mf,这回说几个重头的。从轻的说起:

1、ibatis,这个最轻,几乎不用说什么,只是按照上篇的方法,在runtime中把需要的jar加进去就成了,下图就是例子:


 


 datasource.xml配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
 "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
	<sqlMap resource="mysqlmap.xml" />
</sqlMapConfig>

 

spring config配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:osgi="http://www.springframework.org/schema/osgi"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">

	<bean id="mysqlPersistance" class="com.monitor.bundle.persistance.mysql.MySqlPersistanceImpl">
		<property name="dataSource" ref="datasource" />
		<property name="sqlMapClient" ref="sqlMapClient" />
	</bean>
	
	<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost/monitor?characterEncoding=GB2312" />
		<property name="username" value="user" />
		<property name="password" value="XXX" />
	</bean>
	 
	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation" value="classpath:datasourceconfig.xml" />
	</bean>
	
	<osgi:service id="mysqlPersistanceService" interface="com.monitor.bundle.interfaces.PersistanceIF" ref="mysqlPersistance" />
</beans>
 

不过这点我倒是有个疑问:以前我是将连接池什么都写在datasource.xml中的,自己创建SqlMapClient,自打老四来了,就把datasource.xml简化了,都在spring中配置了,而且连接池也是在spring配置。

和老四争论未果,也不知道到底哪个好?

 

2、再说timer,可喜的是,Spring DM和timer基本上是两码事,这使得这两个东西可以在一起调用,如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">

	<bean id="timer" class="com.zeromonitor.bundle.timer.TimerController">
		<property name="probe">
			<osgi:reference interface="com.zeromonitor.bundle.interfaces.ProbeIF" />
		</property>
	</bean>

	<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
		<property name="timerTask" ref="timer" />
		<property name="delay" value="0" />
		<property name="period" value="10000" />
	</bean>
	
	<bean class="org.springframework.scheduling.timer.TimerFactoryBean">  
    	<property name="scheduledTimerTasks">  
   			<list>    
   				<ref bean="scheduledTask"/>                          
   			</list>    
   		</property>  
   </bean>   
</beans>

 

3、最后剩下的就是麻烦的active mq了,以前用他的时候,特好用:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:amq="http://activemq.apache.org/schema/core"
       xmlns:jms="http://www.springframework.org/schema/jms"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
            http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd">

    <!--  lets create an embedded ActiveMQ Broker -->

    <amq:broker useJmx="false" persistent="false">
        <amq:transportConnectors>
            <amq:transportConnector uri="tcp://localhost:61234"/>
        </amq:transportConnectors>
    </amq:broker>

    

    <!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
    <amq:connectionFactory id="jmsFactory" brokerURL="tcp://localhost:61234"/>

    <!-- a sample POJO consumer -->
    <bean id="receiver" class="activemq.SpringReceiver"/>

    
    <jms:listener-container connection-factory="jmsFactory" destination-type="queue" concurrency="10" >
        <!-- 这里的destination是  physicalName -->
        <jms:listener destination="org.apache.activemq.command.ActiveMQQueue" ref="receiver" method="onMessage"/>
    </jms:listener-container>


</beans>

 

用amp和jms的namespace就都搞定了,又能自动起amq,又能监听。

但是用Spring DM以后一切都完蛋了!

如果按照如上的配置,报一个不能refresh的错误(具体的忘了),查了springsource的jira以后,发现这个问题是无法解决的,原因是:broker和监听随着spring一起来,就不能更改了,你DM一会儿start,一会儿uninstall的,没法儿正确创建服务和监听。

所以,现在闹得我们自己编代码监听,而且在程序外部起amp。

谁要知道怎么解决,一定赐教一把啊

  • 大小: 18.5 KB
分享到:
评论

相关推荐

    一头扎进JMS之ActiveMQ系列

    在提供的“一头扎进JMS之ActiveMQ视频教程”中,你将学习如何配置和使用ActiveMQ,包括安装和启动服务、创建和管理消息队列、使用生产者和消费者发送与接收消息、理解不同消息模式的工作原理,以及如何利用ActiveMQ...

    MQ之ActiveMQ思维导图.zip

    **ActiveMQ 概述** ActiveMQ 是 Apache 开源组织提供的一款高效、强大的消息...通过这个“MQ之ActiveMQ思维导图”,读者可以系统地理解和掌握 ActiveMQ 的核心功能和应用场景,进一步提升在消息队列领域的专业技能。

    MQ之ActiveMQ.mmap

    自己做的尚硅谷周阳老师ActiveMQ课程脑图,其中自己所用做案例的环境搭建都是基于docker与老师课程不一样。脑图内容涵盖视频的99%的笔记,含有自己编写的代码文件,外加了自己对一些问题的测试与回答。 消息中间件...

    jms之activeMQ 队列和广播模式例子(主要给初学者提供入门知识)

    这篇博客"jms之activeMQ 队列和广播模式例子"主要面向初学者,旨在提供ActiveMQ入门级的知识,通过实例解释队列(Queue)和主题(Topic)这两种基本的消息模式。 首先,我们要理解JMS中的队列和主题的区别。队列...

    ActiveMQ消息服务器 v6.0.1.zip

    2. 高性能和可扩展性:ActiveMQ采用了高效的存储机制和网络协议,能够处理大量并发连接和高频率的消息交换。通过集群和负载均衡,可以轻松扩展以满足不断增长的需求。 3. 路由和过滤:ActiveMQ提供丰富的消息路由和...

    java中间件之activemq

    4. **JMS 1.1及J2EE规范支持**:ActiveMQ完全符合JMS 1.1和J2EE 1.4规范,包括持久化、分布式事务消息和事务处理等功能。 5. **与Spring框架的集成**:通过Spring的配置文件,可以轻松将ActiveMQ嵌入到Spring应用中...

    activeMQ收发工具.rar

    ActiveMQ是中国最流行的开源消息中间件之一,由Apache软件基金会开发。它基于Java Message Service (JMS) 规范,提供了可靠的消息传递功能,适用于分布式系统中的应用间通信。本压缩包“activeMQ收发工具.rar”包含...

    Linux下activeMQ的启动和停止.docx

    在Linux环境下,Apache ActiveMQ是一个广泛使用的开源消息代理和队列服务器,它是Java Message Service (JMS) 的实现,能够处理大量的并发消息传递。ActiveMQ提供了高可用性、可扩展性和稳定性,使得它成为分布式...

    ActiveMQ接受和发送工具.rar

    ActiveMQ是中国最流行的开源消息中间件之一,基于Java Message Service(JMS)规范,它提供了一个高可伸缩、高性能、稳定且灵活的消息传递平台。这个"ActiveMQ接受和发送工具.rar"压缩包包含了用于与ActiveMQ交互的...

    activeMQ推送服务端和客户端完整案例

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递协议(Open Message Broker Protocol,即AMQP)和Java消息服务(Java Message Service,JMS)规范,广泛应用于分布式系统中的异步通信和...

    JMS之ActiveMQ工具类+使用例子.zip

    2. **高性能**:ActiveMQ采用了高效的缓存策略和内存管理,确保高吞吐量和低延迟。 3. **高可用性**:通过集群和故障转移功能,ActiveMQ可以提供高可用的服务,确保消息不会丢失。 4. **多种协议支持**:除了JMS,...

    ActiveMQ安装和使用

    ActiveMQ可以作为消息中间件用于异步通信场景,例如消息队列(Queue)和发布/订阅模型(Pub/Sub),这些特性使其在分布式系统中得到广泛应用。 #### 二、安装步骤 ##### 1. 环境准备 - **操作系统**:CentOS 6.6 ...

    JMS教程+activemq以及activemq和tomcat的整合

    ActiveMQ支持多种协议,如OpenWire、AMQP、STOMP、XMPP和MQTT,使得不同平台和语言的应用能够轻松地集成。ActiveMQ还提供了一些高级特性,如事务、持久化、消息优先级和消息组。 **ActiveMQ与Tomcat整合** Tomcat...

    window系统搭建activeMQ集群和操作步骤

    在Windows系统上搭建ActiveMQ集群是一项关键的任务,它涉及到分布式消息传递系统的设计和优化。ActiveMQ是Apache软件基金会开发的一款开源消息代理,它遵循Java Message Service (JMS) 规范,提供高可靠的消息传递...

    ActiveMQ 之Spring结合实例

    包括1、ActiveMQ java实例 2、ActiveMQ Spring结合实例 3、代码亲测,无问题。 4、资源分5分绝对值 注意:请先安装ActiveMQ 服务。

    Jmeter测试ActiveMQ性能报告

    本报告详细阐述了使用JMeter对ActiveMQ进行性能测试的过程和结果,旨在评估ActiveMQ在JMS(Java消息服务)环境下的性能表现。JMeter作为一个强大的负载和性能测试工具,被广泛用于测试各种应用程序,包括消息中间件...

    activemqactivemq

    在“activemqactivemq”这个主题下,我们主要关注如何使用ActiveMQ进行消息的接收和发送。 首先,我们需要了解ActiveMQ的基本概念。消息中间件(Message Broker)如ActiveMQ,扮演着应用间通信的桥梁角色,允许应用...

    自己实现的ActiveMQ连接池和新版本ActiveMQ自带的连接池,封装好的工具类,可直接使用

    同时,熟悉JMS(Java Message Service)规范也是必不可少的,因为ActiveMQ是基于JMS接口进行通信的。了解了这些基础知识后,可以根据项目需求选择合适的连接池实现,并正确配置和使用。 文件zc-activemq可能是包含...

    ActiveMQ 配置文件详解

    Apache ActiveMQ 是一个开源的消息中间件,它实现了多种消息协议,如JMS(Java Message Service)和AMQP(Advanced Message Queuing Protocol),并且广泛应用于分布式系统中,提供可靠的消息传递和队列管理。...

Global site tag (gtag.js) - Google Analytics