MOM初窥:AcitveMQ HelloWorld
来源:互联网 发布:生成对抗网络理解 编辑:程序博客网 时间:2024/05/16 16:59
AcitveMQ是Apache出品,最流行的,能力强劲的开源消息总线,它是一个完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现。
AcitveMQ的安装
官网下载地址:http://activemq.apache.org/download-archives.html
由于我是在Windows系统下学习AcitveMQ,所以我下载的是:apache-activemq-5.6.0-bin.zip,下载好进行解压缩,目录如下:
AcitveMQ的启动
在解压得到的bin目录中包含一个名为activemq.bat的脚本,直接运行这个脚本就可以启动一个broker,启动之前别忘了需先配置好%JAVA_HOME%环境变量。
AcitveMQ程序内部利用jetty容器部署了一个web管理界面,默认服务启动地址:http://127.0.0.1:8161/admin/
若要开启管理后台登录密码验证,可按以下步骤进行配置。
修改jetty服务器的配置文件,apache-activemq-5.6.0\conf\jetty.xml,需将"authenticate"属性设置为"true"。<bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint"> <property name="name" value="BASIC" /> <property name="roles" value="admin" /> <property name="authenticate" value="true" /> </bean>再修改管理后台的登录用户名密码配置文件,apache-activemq-5.6.0\conf\jetty-realm.properties。## ---------------------------------------------------------------------------## Licensed to the Apache Software Foundation (ASF) under one or more## contributor license agreements. See the NOTICE file distributed with## this work for additional information regarding copyright ownership.## The ASF licenses this file to You under the Apache License, Version 2.0## (the "License"); you may not use this file except in compliance with## the License. You may obtain a copy of the License at## ## http://www.apache.org/licenses/LICENSE-2.0## ## Unless required by applicable law or agreed to in writing, software## distributed under the License is distributed on an "AS IS" BASIS,## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.## See the License for the specific language governing permissions and## limitations under the License.## ---------------------------------------------------------------------------# Defines users that can access the web (console, demo, etc.)# username: password [,rolename ...]admin: admin, admin温馨提示:windows操作系统下,若开启Internet connection share(ICS)服务会占用61616端口,会导致ActiveMQ无法启动。
工程搭建
搭建ActiveMQ工程很简单,只需要创建一个Java project,并将ActiveMQ安装根目录下的 activemq-all-5.6.0.jar 包添加到项目的构建路径中,创建好的activeMQ_HelloWorld工程目录层级如下。先创建生产者ActiveMQProducer,其完整代码如下。package com.pengjunlee.activemq;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;public class ActiveMQProducer {public static void main(String[] args) throws Exception {// 第一步:创建ConnectionFactory,需要指定用户名、密码、以及要连接的地址ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD,"tcp://localhost:61616");// 第二步:利用ConnectionFactory创建一个Connection连接,并且调用Connection的start()方法开启连接Connection connection = connectionFactory.createConnection();connection.start();// 第三步:通过Connection对象创建Session会话(上下文环境对象),用于接收消息// createSession的两个参数:(是否启用事务,消息确认模式)Session session = connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);// 第四步:通过Session创建Destination对象,目的地指的是生产消息的目标和消费消息的来源// 在PTP模式中,Destination被称作Queue队列,在Pub/Sub模式中,Destination被称作Topic主题Destination destination = session.createQueue("queue1");// 第五步:通过Session对象创建消息生产者和消息消费者(MessageProducer/MessageConsumer)MessageProducer messageProducer = session.createProducer(destination);// 第六步:利用messageProducer的setDeliveryMode()方法设置消息是否需要持久化messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);// 第七步:通过Session创建Message消息TextMessage textMessage = session.createTextMessage("this is a activeMQ Message!");// 第八步:调用MessageProducer的send()方法发送消息messageProducer.send(textMessage);// 第九步:关闭连接,释放资源if (connection != null) {connection.close();}}}运行ActiveMQProducer,登录http://127.0.0.1:8161/admin/管理后台,其队列信息如下。再创建消息消费者ActiveMQConsumer,其完整代码如下。package com.pengjunlee.activemq;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;public class ActiveMQConsumer {public static void main(String[] args) throws JMSException {// 第一步:创建ConnectionFactory,需要指定用户名、密码、以及要连接的地址ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD,"tcp://localhost:61616");// 第二步:利用ConnectionFactory创建一个Connection连接,并且调用Connection的start()方法开启连接Connection connection = connectionFactory.createConnection();connection.start();// 第三步:通过Connection对象创建Session会话(上下文环境对象),用于接收消息// createSession的两个参数:(是否启用事务,消息确认模式)Session session = connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);// 第四步:通过Session创建Destination对象,目的地指的是生产消息的目标和消费消息的来源// 在PTP模式中,Destination被称作Queue队列,在Pub/Sub模式中,Destination被称作Topic主题Destination destination = session.createQueue("queue1");// 第五步:通过Session对象创建消息生产者和消息消费者(MessageConsumer/MessageConsumer)MessageConsumer messageConsumer = session.createConsumer(destination);// 第六步:调用MessageConsumer的receive()方法获取消息TextMessage textMessage = (TextMessage) messageConsumer.receive();System.out.println(textMessage.getText());// 第七步:关闭连接,释放资源if (connection != null) {connection.close();}}}
运行ActiveMQConsumer,登录后台再次查看队列信息。
ConnectionFactory连接密码认证
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD,"tcp://localhost:61616");在new ActiveMQConnectionFactory时若要开启登录密码验证,可按以下步骤进行配置。修改apache-activemq-5.6.0\conf\activemq.xml,在<systemUsage>节点前面添加如下配置。
<plugins> <simpleAuthenticationPlugin> <users> <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/> </users> </simpleAuthenticationPlugin> </plugins> <!-- The systemUsage controls the maximum amount of space the broker will use before slowing down producers. For more information, see: http://activemq.apache.org/producer-flow-control.html If using ActiveMQ embedded - the following limits could safely be used: <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="20 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="1 gb"/> </storeUsage> <tempUsage> <tempUsage limit="100 mb"/> </tempUsage> </systemUsage> </systemUsage> -->在apache-activemq-5.6.0\conf\credentials.properties文件中指定用户名和密码。## ---------------------------------------------------------------------------## Licensed to the Apache Software Foundation (ASF) under one or more## contributor license agreements. See the NOTICE file distributed with## this work for additional information regarding copyright ownership.## The ASF licenses this file to You under the Apache License, Version 2.0## (the "License"); you may not use this file except in compliance with## the License. You may obtain a copy of the License at## ## http://www.apache.org/licenses/LICENSE-2.0## ## Unless required by applicable law or agreed to in writing, software## distributed under the License is distributed on an "AS IS" BASIS,## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.## See the License for the specific language governing permissions and## limitations under the License.## ---------------------------------------------------------------------------# Defines credentials that will be used by components (like web console) to access the brokeractivemq.username=activeMQactivemq.password=123456guest.password=password在new ActiveMQConnectionFactory时需指定用户名和密码。ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("activeMQ","123456","tcp://localhost:61616");
阅读全文
3 0
- MOM初窥:AcitveMQ HelloWorld
- MOM初窥:MOM&JMS
- MOM
- AcitveMQ编程实践
- Acitvemq延迟重发错误
- MOM架构
- Dear Mom and Dad
- 足球妈妈 soccer mom
- mom.exe进程什么?
- 大鱼吃小鱼游戏-mom.js
- 大鱼吃小鱼游戏-mom.js
- MOM:消息中间件
- Optimize MOM 2005 Agent installation
- 面向消息的中间件MOM
- [转]AMQP,JMS和MOM
- MOM(Memory covercommit management)介绍
- MOM(Memory covercommit management)介绍
- MyBatis初窥:HelloWorld
- option stateSaveParams 状态数据保存操作回调函数
- 软件比较
- Java 异常
- [Loj]#6002. 「网络流 24 题」最小路径覆盖
- option stateSaveCallback 定义表格状态怎样、在哪里存储
- MOM初窥:AcitveMQ HelloWorld
- C语言问题笔记(私用)
- Poedu_Python_Lesson002_基础语法_数据类型
- 【大数据部落】电信公司churn数据客户流失knn预测分析(二)
- python导入第三方库
- PyQt4入门教程(2)_PyQt4的第一个程序
- 223. Rectangle Area
- Android团队的组建和管理
- PeekMessage