- 浏览: 55962 次
最新评论
虽然今天的大多数开发者使用一个框架编写他们的应用,但是用最简单的Java总是好的。在这一节我们使用ActiveMQ的Java APIs来initialize和configureActiveMQ。你将看到如何使用BrokerService类来配置代理,什么都不用,仅仅是纯Java。
然后我们将讨论你如何能使用定制的配置XML文件配置你的代理。我们将使用BrokerFactory类来实现它并且你将能使用regular配置文件将ActiveMQ嵌入到你的Java应用程序中。这节之后你将能在你的Java应用中通过任何配置将ActiveMQ嵌入其中。
7.1.1使用BrokerService嵌入ActiveMQ
当使用纯Java建立你的代理,org.apache.activemq.broker.BrokerService 类是一个起点。这个类被用来配置代理和管理它的整个生命周期。该类的使用方法演示最要用一个示例。让我们以第6章中使用的代理配置类配置一个简单的authentication插件并来看看我们如何使用纯Java来实现相同的功能。对于初学者,让我们看看熟知的XML配置示例吧:
Listing 7.1 Configure ActiveMQ with security plug-ins using XML
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="myBroker" dataDirectory="${activemq.base}/data">
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616" />
</transportConnectors>
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="admin" password="password" groups="admins,publishers,consumers"/>
<authenticationUser username="publisher" password="password" groups="publishers,consumers"/>
<authenticationUser username="consumer" password="password" groups="consumers"/>
<authenticationUser username="guest" password="password" groups="guests"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
</broker>
表7.1使用了基本的ActiveMQ的XML来定义一个代理实例,定义了一个名字和数据目录还有transport connector和一个插件。现在看看下面使用纯Java和BrokerService的配置,如下所示:
Listing 7.2 Configure ActiveMQ with security plug-ins using Java
如你所见,表7.2实例化了BrokerService并配置了brokerName和dataDirectory属性。下面SimpleAuthenticationPlugin通过setPlugins()方法被添加到BrokerService。然后一个transport connector通过addConnector()方法被添加到BrokerService。最后start()的方法被用来启动BrokerService实例。现在你完全使用纯Java初始化了代理;没有XML配置文件被用到。要看看该类的活动,执行如下的命令:
Listing 7.3 Run the pure Java example of the BrokerService
$ mvn exec:java \
-Dexec.mainClass=org.apache.activemq.book.ch7.broker.Broker \
-Dlog4j.configuration=file:src/main/java/log4j.properties
...
[INFO] [exec:java {execution: default-cli}]
INFO | Using Persistence Adapter: AMQPersistenceAdapter(data/localhost)
INFO | AMQStore starting using directory: data/localhost
INFO | Kaha Store using data directory data/localhost/kr-store/state
INFO | AMQPersistenceAdapter - Active data files: []
INFO | ActiveMQ 5.4.1 JMS Message Broker (localhost) is starting
INFO | For help or more information please see: http://activemq.apache.org/
INFO | Kaha Store using data directory data/localhost/kr-store/data
INFO | Listening for connections at: tcp://localhost:61616
INFO | Connector tcp://localhost:61616 Started
INFO | JMX consoles can connect to
service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
INFO | ActiveMQ JMS Message Broker
(localhost, ID:dejanb-63935-1269536159457-0:0) started
Press any key to stop the broker
...
在表7.3中需要注意的重要的是你应该总在connectors之前添加你的插件;否则他们将不能被初始化。同样地,在代理启动后添加的任何connector将不会被适当地启动。
当你想使用纯Java类配置代理的时候BrokerService类很有用。如果你不需要一个极度定制化的配置,这个方法对许多情况都是有用的。在许多应用中,你会想要使用和配置单独ActiveMQ代理实例相同的配置文件来初始化代理。为了这个目的ActiveMQ提供了org.apache.activemq.broker.BrokerFactory类。
7.1.2使用BrokerFactory嵌入ActiveMQ
BrokerFactory类这个功能能使使用一个ActiveMQ URI建立代理实例变得很简单。基于代理URI scheme,BrokerFactory定位合适的工厂并使用它建立BrokerService类的实例。最被广泛使用的工厂类是XBeanBrokerFactory类并且通过简单地通过XBean-style的URI来配置。XBean broker URI的示例显示如下:
xbean:/path/to/activemq.xml
该示例URI告诉BrokerFactory去使用XBeanBrokerFactory和冒号后面的路径创建代理实例。
现在,让我们看看下面的列表。BrokerFactory能使用基本的ActiveMQ XML配置文件实例化BrokerService,如下所示:
如你在表7.4所见,BrokerFactory.createBroker()方法使用了一个配置URI来建立BrokerService实例。注意在表7.4中用到的配置URI是xbean:URI scheme。这个告诉了代理工厂去在classpath或者文件系统中的其他什么地方搜索给定的XML配置文件。为了illustrate这个示例,下面是执行它的命令:
Listing 7.5 Run the example of the BrokerFactory
$ mvn exec:java \
-Dexec.mainClass=org.apache.activemq.book.ch7.broker.Factory \
-Dlog4j.configuration=file:src/main/java/log4j.properties
...
[INFO] [exec:java {execution: default-cli}]
INFO | Using Persistence Adapter: AMQPersistenceAdapter(data/localhost)
INFO | AMQStore starting using directory: data/localhost
INFO | Kaha Store using data directory data/localhost/kr-store/state
INFO | Active data files: []
INFO | ActiveMQ 5.4.1 JMS Message Broker (localhost) is starting
INFO | For help or more information please see: http://activemq.apache.org/
INFO | Kaha Store using data directory data/localhost/kr-store/data
INFO | Listening for connections at: tcp://localhost:61616
INFO | Connector openwire Started
INFO | ActiveMQ JMS Message Broker
(localhost, ID:dejanb-65001-1269594442403-0:0) started
Press any key to stop the broker
...
你也能为完全通过配置URI执行的简单代理配置使用broker:URI scheme。看下面的URI示例:
broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
这个简单的URI包含了启动代理的足够的配置,包括network和transport connectors;持久化被禁用并且JMX被明确启用。更多的信息,请看ActiveMQ网站(http://mng.bz/FNos)上详细的URI说明信息。
如前面所提到的,大多数的Java开发者使用一些框架来构成他们的应用。因为Spring 框架(http://www.springframework.org/)是如今最流行的框架,让我们调查一下若要在Spring框架中像组件一样使用ActiveMQ该如何配置。
然后我们将讨论你如何能使用定制的配置XML文件配置你的代理。我们将使用BrokerFactory类来实现它并且你将能使用regular配置文件将ActiveMQ嵌入到你的Java应用程序中。这节之后你将能在你的Java应用中通过任何配置将ActiveMQ嵌入其中。
7.1.1使用BrokerService嵌入ActiveMQ
当使用纯Java建立你的代理,org.apache.activemq.broker.BrokerService 类是一个起点。这个类被用来配置代理和管理它的整个生命周期。该类的使用方法演示最要用一个示例。让我们以第6章中使用的代理配置类配置一个简单的authentication插件并来看看我们如何使用纯Java来实现相同的功能。对于初学者,让我们看看熟知的XML配置示例吧:
Listing 7.1 Configure ActiveMQ with security plug-ins using XML
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="myBroker" dataDirectory="${activemq.base}/data">
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616" />
</transportConnectors>
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="admin" password="password" groups="admins,publishers,consumers"/>
<authenticationUser username="publisher" password="password" groups="publishers,consumers"/>
<authenticationUser username="consumer" password="password" groups="consumers"/>
<authenticationUser username="guest" password="password" groups="guests"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
</broker>
表7.1使用了基本的ActiveMQ的XML来定义一个代理实例,定义了一个名字和数据目录还有transport connector和一个插件。现在看看下面使用纯Java和BrokerService的配置,如下所示:
Listing 7.2 Configure ActiveMQ with security plug-ins using Java
public static void main(String[] args) throws Exception { BrokerService broker = new BrokerService(); broker.setBrokerName("myBroker"); broker.setDataDirectory("data/"); SimpleAuthenticationPlugin authentication = new SimpleAuthenticationPlugin(); List<AuthenticationUser> users = new ArrayList<AuthenticationUser>(); users.add(new AuthenticationUser("admin","password","admins,publishers,consumers")); users.add(new AuthenticationUser("publisher","password","publishers,consumers")); users.add(new AuthenticationUser("consumer","password","consumers")); users.add(new AuthenticationUser("guest","password","guests")); authentication.setUsers(users); broker.setPlugins(new BrokerPlugin[]{authentication}); broker.addConnector("tcp://localhost:61616"); broker.start(); System.out.println(); System.out.println("Press any key to stop the broker"); System.out.println(); System.in.read(); }
如你所见,表7.2实例化了BrokerService并配置了brokerName和dataDirectory属性。下面SimpleAuthenticationPlugin通过setPlugins()方法被添加到BrokerService。然后一个transport connector通过addConnector()方法被添加到BrokerService。最后start()的方法被用来启动BrokerService实例。现在你完全使用纯Java初始化了代理;没有XML配置文件被用到。要看看该类的活动,执行如下的命令:
Listing 7.3 Run the pure Java example of the BrokerService
$ mvn exec:java \
-Dexec.mainClass=org.apache.activemq.book.ch7.broker.Broker \
-Dlog4j.configuration=file:src/main/java/log4j.properties
...
[INFO] [exec:java {execution: default-cli}]
INFO | Using Persistence Adapter: AMQPersistenceAdapter(data/localhost)
INFO | AMQStore starting using directory: data/localhost
INFO | Kaha Store using data directory data/localhost/kr-store/state
INFO | AMQPersistenceAdapter - Active data files: []
INFO | ActiveMQ 5.4.1 JMS Message Broker (localhost) is starting
INFO | For help or more information please see: http://activemq.apache.org/
INFO | Kaha Store using data directory data/localhost/kr-store/data
INFO | Listening for connections at: tcp://localhost:61616
INFO | Connector tcp://localhost:61616 Started
INFO | JMX consoles can connect to
service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
INFO | ActiveMQ JMS Message Broker
(localhost, ID:dejanb-63935-1269536159457-0:0) started
Press any key to stop the broker
...
在表7.3中需要注意的重要的是你应该总在connectors之前添加你的插件;否则他们将不能被初始化。同样地,在代理启动后添加的任何connector将不会被适当地启动。
当你想使用纯Java类配置代理的时候BrokerService类很有用。如果你不需要一个极度定制化的配置,这个方法对许多情况都是有用的。在许多应用中,你会想要使用和配置单独ActiveMQ代理实例相同的配置文件来初始化代理。为了这个目的ActiveMQ提供了org.apache.activemq.broker.BrokerFactory类。
7.1.2使用BrokerFactory嵌入ActiveMQ
BrokerFactory类这个功能能使使用一个ActiveMQ URI建立代理实例变得很简单。基于代理URI scheme,BrokerFactory定位合适的工厂并使用它建立BrokerService类的实例。最被广泛使用的工厂类是XBeanBrokerFactory类并且通过简单地通过XBean-style的URI来配置。XBean broker URI的示例显示如下:
xbean:/path/to/activemq.xml
该示例URI告诉BrokerFactory去使用XBeanBrokerFactory和冒号后面的路径创建代理实例。
现在,让我们看看下面的列表。BrokerFactory能使用基本的ActiveMQ XML配置文件实例化BrokerService,如下所示:
public class Factory { public static void main(String[] args) throws Exception { System.setProperty("activemq.base", System.getProperty("user.dir")); String configUri = "xbean:target/classes/org/apache/activemq/book/ch6/activemq-simple.xml"; URI brokerUri = new URI(configUri); BrokerService broker = BrokerFactory.createBroker(brokerUri); broker.start(); System.out.println(); System.out.println("Press any key to stop the broker"); System.out.println(); System.in.read(); } }
如你在表7.4所见,BrokerFactory.createBroker()方法使用了一个配置URI来建立BrokerService实例。注意在表7.4中用到的配置URI是xbean:URI scheme。这个告诉了代理工厂去在classpath或者文件系统中的其他什么地方搜索给定的XML配置文件。为了illustrate这个示例,下面是执行它的命令:
Listing 7.5 Run the example of the BrokerFactory
$ mvn exec:java \
-Dexec.mainClass=org.apache.activemq.book.ch7.broker.Factory \
-Dlog4j.configuration=file:src/main/java/log4j.properties
...
[INFO] [exec:java {execution: default-cli}]
INFO | Using Persistence Adapter: AMQPersistenceAdapter(data/localhost)
INFO | AMQStore starting using directory: data/localhost
INFO | Kaha Store using data directory data/localhost/kr-store/state
INFO | Active data files: []
INFO | ActiveMQ 5.4.1 JMS Message Broker (localhost) is starting
INFO | For help or more information please see: http://activemq.apache.org/
INFO | Kaha Store using data directory data/localhost/kr-store/data
INFO | Listening for connections at: tcp://localhost:61616
INFO | Connector openwire Started
INFO | ActiveMQ JMS Message Broker
(localhost, ID:dejanb-65001-1269594442403-0:0) started
Press any key to stop the broker
...
你也能为完全通过配置URI执行的简单代理配置使用broker:URI scheme。看下面的URI示例:
broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
这个简单的URI包含了启动代理的足够的配置,包括network和transport connectors;持久化被禁用并且JMX被明确启用。更多的信息,请看ActiveMQ网站(http://mng.bz/FNos)上详细的URI说明信息。
如前面所提到的,大多数的Java开发者使用一些框架来构成他们的应用。因为Spring 框架(http://www.springframework.org/)是如今最流行的框架,让我们调查一下若要在Spring框架中像组件一样使用ActiveMQ该如何配置。
发表评论
文章已被作者锁定,不允许评论。
-
三次样条曲线
2014-04-11 17:33 1866原文地址: http://www.math ... -
APPLE PUBLIC SOURCE LICENSE (APSL)
2013-05-23 13:47 0原文地址:http://www.publicsource.ap ... -
翻译的一些说明
2013-03-07 14:48 0翻译的一些说明: 1,对于一些专有名词如speex,api不过 ... -
ALSA driver 安装指南(中文版)
2012-12-29 11:28 0ALSA 驱动替代了OSS/Free驱动。从版本0.4.0开始 ... -
ALSA driver 安装指南(英文版)
2012-12-28 14:30 0Advanced Linux Sound Architectu ... -
Addons
2013-01-08 10:37 1024Addons是动态链接共享对象。它们能提供和c及c++库的粘合 ... -
8.4和Apache Geronimo集成
2013-04-16 20:01 1549Apache Geronimo应用服务器是在应用服务器许多方面 ... -
8.3和Jetty集成
2013-04-16 19:58 1121Jetty web container已经存在了很长时间并使可 ... -
8.2和Apache Tomcat集成
2013-03-11 21:54 1499Apache Tomcat是可论证的当今使用最广的可用的Jav ... -
8.1web应用示例
2013-03-11 21:54 11158.1web应用示例 为了在本章中演示集成示例,一个web应用 ... -
8.0将ActiveMQ集成到应用服务器
2013-03-11 21:54 957本章包括下面内容: ■ ... -
7.5小结
2013-03-11 21:53 628在本章中,你已经看到了ActiveMQ如何能被看做不仅是一个独 ... -
7.4使用Spring编写JMS客户端
2013-03-11 21:53 1482ActiveMQ使用Spring框架来ease client- ... -
7.3实现request/reply with JMS
2012-12-07 16:12 1483如前面章节中描述的,m ... -
7.2使用Spring嵌入ActiveMQ
2012-12-06 15:01 1677ActiveMQ is developed with Spri ... -
7.0建立带ActiveMQ的Java程序
2012-12-05 13:47 1084本章包括: ■在Java应用程序中嵌入ActiveMQ ■使用 ... -
6.5总结
2012-12-05 11:33 726在这一章中,ActiveMQ被从无身份验证no-authent ... -
6.4基于证书的安全
2012-12-05 11:10 1455在本章前面部分,我们描述了ActiveMQ插件被用来验证客户端 ... -
ActiveMQ in action 1~4章
2012-11-27 16:25 848http://jfires.iteye.com/ -
6.3建立定制安全插件
2012-11-27 17:27 1421至今这章关注于ActiveMQ ...
相关推荐
在这个Java项目中,包含了使用Java操作ActiveMQ的代码示例和所需的jar包,可以方便地运行队列和订阅模式。 在ActiveMQ中,有两种主要的消息传递模型:队列(Queue)和主题(Topic)。队列遵循“一对一”通信模式,...
ActiveMQ,作为Java消息服务(JMS)的一个实现,是Apache软件基金会开发的一款开源消息中间件。它在分布式系统中扮演着重要的角色,允许不同组件或服务之间进行异步通信,提高了系统的可扩展性和解耦性。在Java编程...
使用这四种配置方式嵌入ActiveMQ到Spring中,可以根据实际的应用场景和需求选择合适的方法。纯Spring配置文件和引入配置文件的方法较为常用,因为它们易于管理和维护。硬编码方式和特定schema的方式适合于对配置灵活...
发布/订阅消息传递域的特点如下:(1)生产者将消息发布到topic中,每个消息可以有多个消费者,属于1:N关系(2)生产者和...启动ActiveMQ之后访问http://localhost:8161/admin/topics.jsp,此时的Topic中什么也没有先
标题中的“在Java与C++间应用Activemq”指的是使用Apache ActiveMQ这一开源消息代理在Java和C++编程语言之间构建通信桥梁。ActiveMQ是Java Message Service (JMS) 的实现,允许分布式系统中的组件通过消息传递进行...
同时,熟悉JMS(Java Message Service)规范也是必不可少的,因为ActiveMQ是基于JMS接口进行通信的。了解了这些基础知识后,可以根据项目需求选择合适的连接池实现,并正确配置和使用。 文件zc-activemq可能是包含...
10. **日志和监控**:ActiveMQ使用了Log4j进行日志记录,并提供了监控工具,源码中可以了解如何设置和使用这些监控机制。 通过深入研究ActiveMQ 5的Java源码,开发者可以更好地理解消息中间件的工作机制,这对于...
在这个"zis.rar_active MQ_activemq_java _activeMQ_java 转发"的压缩包中,我们可以推测其主要内容可能涉及如何使用ActiveMQ在Java环境中实现消息的转发功能。 首先,我们需要理解ActiveMQ的基本概念。ActiveMQ...
java springboot整合activemq工程 #activemq配置 #默认情况下activemq提供的是queue模式 true是可以使用topic,false是仅使用queue模式 spring.jms.pub-sub-domain: true # 设置连接的activemq服务器 spring....
在这个"activeMQ的java简单实例.zip"压缩包中,我们可能找到了一个简单的Java项目,用于演示如何在Java应用中集成和使用ActiveMQ。以下是一些关于ActiveMQ和Java集成的关键知识点: 1. **ActiveMQ安装与配置**:...
5. **与Spring框架的集成**:通过Spring的配置文件,可以轻松将ActiveMQ嵌入到Spring应用中,简化了部署和管理过程。 6. **多样化连接方式**:ActiveMQ提供了多种连接模式,如in-VM、TCP、SSL、NIO、UDP、多播、...
`examples`文件夹包含了许多示例代码,这些代码用Java、C++、Python等语言编写,展示了如何使用ActiveMQ API发送和接收消息。你可以运行这些示例来快速体验ActiveMQ的功能。 ActiveMQ支持多种协议,包括OpenWire、...
10. **Tomcat服务器**:Tomcat是一个流行的Java Web服务器,它可以部署和运行使用Spring和ActiveMQ的Web应用程序。 通过上述知识点,我们可以理解如何在Spring环境中利用ActiveMQ进行消息传递,实现高并发、解耦的...
标题"memcached和activeMQ的JAVA示例代码"表明这是一个关于使用Java编程语言实现的,针对memcached缓存系统和activeMQ消息中间件的示例项目。这通常是为了帮助开发者理解如何在实际应用中整合这两种技术。 描述中的...
总结来说,"activemq + spring"的主题涵盖了使用Java原生API连接ActiveMQ以及通过Spring框架实现更高级别的整合,包括利用Spring的JMS支持简化消息发送和接收。这些知识对于构建基于消息驱动的分布式系统,实现解耦...
首先,ActiveMQ是Apache软件基金会开发的一款开源消息代理,它是基于Java Message Service (JMS) 规范的。ActiveMQ支持多种协议,如OpenWire、AMQP、STOMP、MQTT和XMPP,使其能与各种编程语言和框架集成。在安装部署...
java中使用消息中间件ActiveMQ的MQTT协议发布消息使用fusesource,fusesource提供三种方式实现发布消息的方式,分别是阻塞式(BlockingConnection)、回调式(CallbackConnection)和Future样式(FutureConnection)
ActiveMQ是Apache软件基金会开发的消息队列产品,它遵循开放标准,如JMS(Java Message Service)和AMQP(Advanced Message Queuing Protocol),提供跨语言的API和协议支持,可以处理各种消息传递模式,如点对点、...
在"java消息通信activemq"的示例中,我们主要关注以下几个核心知识点: 1. **JMS接口**:JMS定义了生产者(Message Producers)、消费者(Message Consumers)以及消息队列(Queues)和主题(Topics)的概念。生产...
ActiveMQ 是Apache出品,最流行的,能力...本压缩包是是实现ActiveMQ中点对点与发布订阅模式的java项目,下载后可配合运行好的ActiveMQ服务直接运行。 没有ActiveMQ服务的可下载本人的ActiveMQ消息中间件,运行即可。