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
默认账号密码admin/admin
Java接口发生消息至mq、mq--消息队列
流程
配置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
提供方打印 消费方打印 |
一对多 队列改成主题
发布方 mq.xml添加
<!-- 默认不设置是队列 : 设置 就是发送主题
pub : 主题 发布 / 订阅
sub : subject 订阅
Domain :模型
-->
<property name="pubSubDomain" value="true"/>
接收方 mq.xml 同样添加这一句
<!-- 4:默认队列 改成 主题 -->
<property name="pubSubDomain" value="true"/>
因为是一对多 使用要两个以上的的服务来接收发生者的消息