• activeMQ学习


    activeMq

    一个项目的Service  调用另一个项目的service

    下载安装包  环境linux

    创建文件夹 mkdir  activemq

     解压命令 tar  -zvxf   mq文件

    Cd 文件的bin目录 ./activemq  start

    Linux安装activeMq  http://www.cnblogs.com/lyxy/p/5969116.html

    61616是mq服务默认端口:

    netstat -ntlp|grep 8161  

    netstat -an|grep 61616

    ps  -ef | grep activemq

    http://     ip  :8161/admin/

    默认账号密码admin/admin

    Java接口发生消息至mqmq--消息队列

     

     

    流程

    配置mq.xml

    一:

    <!-- 配置activeMq -->

    <!-- 配置原厂家的工厂  由apache提供 -->

    <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">

    <!-- 连接协议  tcp://192.168.200.128:61616 -->

    <property name="brokerURL" value="tcp://192.168.200.128:61616"/>

    <property name="userName" value="admin"/>

    <property name="password" value="admin"/>

    </bean>

    <!-- 配置原厂家的工厂的连接池   由apache提供-->

    <bean id="pooledConnectionFactoryBean" class="org.apache.activemq.pool.PooledConnectionFactoryBean">

    <!-- 上面的工厂 -->

    <property name="connectionFactory" ref="activeMQConnectionFactory"/>

    <!-- 连接数 -->

    <property name="maxConnections" value="2"/>

    </bean>

    <!-- Spring管理 apache提供的原工厂 -->

    <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">

    <!-- 原工厂 -->

    <property name="targetConnectionFactory" ref="pooledConnectionFactoryBean"/>

    </bean>

    <!-- JmsTempalte 操作ActiveMq  某个地点  目标   -->

    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">

    <!-- 注入Spring的工厂 -->

    <property name="connectionFactory" ref="connectionFactory"/>

    <!-- 默认目标  商品ID自定义 -->

    <property name="defaultDestinationName" value="productId"/>

    </bean>

          发送者 需要发送的product   就是   id  我固定成10000

    -------->    

    发送者       -------->             接收者

    接受消息Java

    复制以上 mq.xml添加至接收项目

    <!-- 扫描 -->

    <!-- 配置activeMq -->

    <!--配置原厂家的工厂  由apache提供 -->

    <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">

    <!-- 连接协议  tcp://192.168.200.128:61616 -->

    <property name="brokerURL" value="tcp://192.168.12.128:61616"/>

    <property name="userName" value="admin"/>

    <property name="password" value="admin"/>

    </bean>

    <!-- 配置原厂家的工厂的连接池   由apache提供-->

    <bean id="pooledConnectionFactoryBean" class="org.apache.activemq.pool.PooledConnectionFactoryBean">

    <!-- 上面的工厂 -->

    <property name="connectionFactory" ref="activeMQConnectionFactory"/>

    <!-- 连接数 -->

    <property name="maxConnections" value="2"/>

    </bean>

    <!-- Spring管理 apache提供的原工厂 -->

    <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">

    <!-- 原工厂 -->

    <property name="targetConnectionFactory" ref="pooledConnectionFactoryBean"/>

    </bean>

    <!-- 消息监听进来    再处理类  -->

    <bean id="customMessageListener" class="cn.itcast.core.mq.CustomMessageListener"/>

     

    <!-- 监听MQ -->

    <bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">

    <!-- 1:连接Mq进行监听 -->

    <property name="connectionFactory" ref="connectionFactory"/>

    <!-- 2:监听的目标 地点 -->

    <property name="destinationName" value="productId"/>

    <!-- 3:接收消息 -->

    <property name="messageListener" ref="customMessageListener"/>

     

    </bean>

     

    注意 CustomMessageListener.class

    package cn.bbs.mq;

     

    import javax.jms.JMSException;

    import javax.jms.Message;

    import javax.jms.MessageListener;

     

    import org.apache.activemq.command.ActiveMQTextMessage;

     

    public class CustomMessageListener implements MessageListener{

     

    @Override

    public void onMessage(Message message) {

    ActiveMQTextMessage am = (ActiveMQTextMessage)message;

    try {

    System.out.println(am.getText()+"============="+Long.parseLong(am.getText()));

     

    } catch (JMSException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

     

    }

     

    }

     

    提供方打印

    消费方打印

    一对多   队列改成主题

    发布方 mq.xml添加

    <!-- 默认不设置是队列  : 设置 就是发送主题

    pub  : 主题  发布   / 订阅

    sub : subject 订阅

    Domain :模型

    -->

    <property name="pubSubDomain" value="true"/>

    接收方 mq.xml 同样添加这一句

    <!-- 4:默认队列   改成 主题 -->

    <property name="pubSubDomain" value="true"/>

    因为是一对多 使用要两个以上的的服务来接收发生者的消息

  • 相关阅读:
    C#中 类的多态
    字段与属性
    C# ASCII与字符串间相互转换
    TextBox控件常用方法总结
    使用hadoop mapreduce分析mongodb数据:(2)
    使用hadoop mapreduce分析mongodb数据:(1)
    Linux MPI集群配置
    VIM文本替换
    怎么解决python中TypeError: can't pickle instancemethod objects的这个错误
    LeetCode ZigZag problem
  • 原文地址:https://www.cnblogs.com/jiahaoJAVA/p/7440430.html
Copyright © 2020-2023  润新知