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"/>

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

原文地址:https://www.cnblogs.com/jiahaoJAVA/p/7440430.html