Dubbo高级篇_02_activemq的安装与使用

1.activemq上传、解压安装


解压安装


2.移动activemq到指定目录 


3.配置activemq端口

ActiveMQ 需要用到两个端口 

一个是消息通讯的端口(默认为 61616

 一个是管理控制台端口(默认为 8161)可在conf/jetty.xml 中修改,如下

指定jetty端口


指定通讯端口



4.在防火墙中打开相应端口


5.启动activemq


在浏览器打开访问


admin/admin登录


登录成功


6.安全配置(消息安全)

 ActiveMQ 如果不加入安全机制的话,任何人只要知道消息服务的具体地址(包括 ip,端口,消息地址 [队列或者主题地址 ] ),都可以肆无忌惮的发送、接收消息。关于  ActiveMQ  安装配置 http://activemq.apache.org/security.html

ActiveMQ 的消息安全配置策略有多种,我们以简单授权配置为例:conf/activemq.xml 文件中在broker 标签最后加入以下内容即可:


定义了一个yixq 用户,密码为yxq123456,角色为users,admins


设置 admin 的用户名和密码:


确保 authenticate 的值为true(默认)


控制台的登录用户名密码保存在 conf/jetty-realm.properties 文件中,内容如下


注意:用户名和密码的格式是
用户名 密码,角色名

重启,再登录就是新设置的密码登录 

7.加入环境变量:


8.设置开机启动:

vi /etc/rc.local

加入:

su - yxq -c '/home/yxq/app/activemq/bin/activemq start'

MQ 消息生产者也与消息消费者的 Demo 样例讲解

消息提供方:

  1. package com.edu.demo.mqtest;  
  2.   
  3. import org.apache.commons.logging.Log;  
  4. import org.apache.commons.logging.LogFactory;  
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  6.   
  7. import com.edu.demo.mqtest.MQProducer;  
  8. import com.edu.demo.mqtest.params.MailParam;  
  9.   
  10. public class MQProducerTest {  
  11.     private static final Log log = LogFactory.getLog(MQProducerTest.class);  
  12.   
  13.     public static void main(String[] args) {  
  14.         try {  
  15.             ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");  
  16.             context.start();  
  17.   
  18.             MQProducer mqProducer = (MQProducer) context.getBean("mqProducer");  
  19.             // 邮件发送  
  20.             MailParam mail = new MailParam();  
  21.             mail.setTo("18673132642@163.com");  
  22.             mail.setSubject("ActiveMQ测试");  
  23.             mail.setContent("通过ActiveMQ异步发送邮件!");  
  24.   
  25.             mqProducer.sendMessage(mail);  
  26.   
  27.             context.stop();  
  28.         } catch (Exception e) {  
  29.             log.error("==>MQ context start error:", e);  
  30.             System.exit(0);  
  31.         } finally {  
  32.             log.info("===>System.exit");  
  33.             System.exit(0);  
  34.         }  
  35.     }  
  36. }  
[java] view plain copy
package com.edu.demo.mqtest;  
  
import org.apache.commons.logging.Log;  
import org.apache.commons.logging.LogFactory;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
  
import com.edu.demo.mqtest.MQProducer;  
import com.edu.demo.mqtest.params.MailParam;  
  
public class MQProducerTest {  
    private static final Log log = LogFactory.getLog(MQProducerTest.class);  
  
    public static void main(String[] args) {  
        try {  
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");  
            context.start();  
  
            MQProducer mqProducer = (MQProducer) context.getBean("mqProducer");  
            // 邮件发送  
            MailParam mail = new MailParam();  
            mail.setTo("2779626653@163.com");  
            mail.setSubject("ActiveMQ测试");  
            mail.setContent("通过ActiveMQ异步发送邮件!");  
  
            mqProducer.sendMessage(mail);  
  
            context.stop();  
        } catch (Exception e) {  
            log.error("==>MQ context start error:", e);  
            System.exit(0);  
        } finally {  
            log.info("===>System.exit");  
            System.exit(0);  
        }  
    }  
} 


spring-context.xml
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"  
  3.     xmlns:tx="http://www.springframework.org/schema/tx"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  5.            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
  6.            http://www.springframework.org/schema/aop     
  7.            http://www.springframework.org/schema/aop/spring-aop-3.2.xsd    
  8.            http://www.springframework.org/schema/tx    
  9.            http://www.springframework.org/schema/tx/spring-tx-3.2.xsd    
  10.            http://www.springframework.org/schema/context    
  11.            http://www.springframework.org/schema/context/spring-context-3.2.xsd"  
  12.     default-autowire="byName" default-lazy-init="false">   
  13.       
  14.     <!-- 采用注释的方式配置bean -->  
  15.     <context:annotation-config />  
  16.   
  17.     <!-- 配置要扫描的包 -->  
  18.     <context:component-scan base-package="com.edu.demo" />  
  19.   
  20.     <!-- 读入配置属性文件 -->  
  21.     <context:property-placeholder location="classpath:mq.properties" />  
  22.   
  23.     <!-- proxy-target-class默认"false",更改为"ture"使用CGLib动态代理 -->  
  24.     <aop:aspectj-autoproxy proxy-target-class="true" />     
  25.       
  26.     <import resource="spring-mq.xml" />  
  27. </beans>  
spring-mq.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  7.            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
  8.            http://www.springframework.org/schema/aop     
  9.            http://www.springframework.org/schema/aop/spring-aop-3.2.xsd    
  10.            http://www.springframework.org/schema/tx    
  11.            http://www.springframework.org/schema/tx/spring-tx-3.2.xsd    
  12.            http://www.springframework.org/schema/context    
  13.            http://www.springframework.org/schema/context/spring-context-3.2.xsd"  
  14.     default-autowire="byName" default-lazy-init="false">   
  15.       
  16.     <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->  
  17.     <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  
  18.         <!-- ActiveMQ服务地址 -->  
  19.         <property name="brokerURL" value="tcp://192.168.1.121:61616" />  
  20.         <property name="userName" value="yixq"></property>  
  21.         <property name="password" value="yxq123456"></property>   
  22.     </bean>  
  23.   
  24.     <!--   
  25.         ActiveMQ为我们提供了一个PooledConnectionFactory,通过往里面注入一个ActiveMQConnectionFactory  
  26.         可以用来将Connection、Session和MessageProducer池化,这样可以大大的减少我们的资源消耗。  
  27.         要依赖于 activemq-pool包  
  28.      -->  
  29.     <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">  
  30.         <property name="connectionFactory" ref="targetConnectionFactory" />  
  31.         <property name="maxConnections" value="10" />  
  32.     </bean>  
  33.   
  34.     <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->  
  35.     <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">  
  36.         <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->  
  37.         <property name="targetConnectionFactory" ref="pooledConnectionFactory" />  
  38.     </bean>  
  39.       
  40.     <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->  
  41.       
  42.     <!-- 队列模板 -->  
  43.     <bean id="activeMqJmsTemplate" class="org.springframework.jms.core.JmsTemplate">    
  44.         <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->    
  45.         <property name="connectionFactory" ref="connectionFactory"/>    
  46.         <property name="defaultDestinationName" value="com.edu.mqtest.v1"></property>  
  47.     </bean>   
  48.   
  49. </beans>  

pom.xml配置


测试类
[java]  view plain  copy
  1. package com.edu.demo.mqtest;  
  2.   
  3. import org.apache.commons.logging.Log;  
  4. import org.apache.commons.logging.LogFactory;  
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  6.   
  7. import com.edu.demo.mqtest.MQProducer;  
  8. import com.edu.demo.mqtest.params.MailParam;  
  9.   
  10. public class MQProducerTest {  
  11.     private static final Log log = LogFactory.getLog(MQProducerTest.class);  
  12.   
  13.     public static void main(String[] args) {  
  14.         try {  
  15.             ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");  
  16.             context.start();  
  17.   
  18.             MQProducer mqProducer = (MQProducer) context.getBean("mqProducer");  
  19.             // 邮件发送  
  20.             MailParam mail = new MailParam();  
  21.             mail.setTo("2779626653@163.com");  
  22.             mail.setSubject("ActiveMQ测试");  
  23.             mail.setContent("通过ActiveMQ异步发送邮件!");  
  24.   
  25.             mqProducer.sendMessage(mail);  
  26.   
  27.             context.stop();  
  28.         } catch (Exception e) {  
  29.             log.error("==>MQ context start error:", e);  
  30.             System.exit(0);  
  31.         } finally {  
  32.             log.info("===>System.exit");  
  33.             System.exit(0);  
  34.         }  
  35.     }  
  36. }  






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值