Broker:相当于一个ActiveMQ服务器实例,在实际的开发中我们可以启动多个Broker.

命令行启动参数示例如下:

  1. activemq start 使用默认的activemq.xml来启动。

  2. activemq start xbean:file../conf/active-2.xml来使用指定的配置文件来启动

  3. 如果不指定file,也就是xbean:activemq-2.xml,那么xml必须在classpath下

使用ActiveMQ来构建Java运用

  这里主要将ActiveMQ Broker作为独立的消息服务器来构建JAVA应用。

  ActiveMQ也支持在vm中通信基于嵌入式的broker,能够无缝的集成其他的java应用。

1. 嵌入式Borker启动

  BrokerService启动Broker,示例如下:

package com.wangx.activemq.broker;

import org.apache.activemq.broker.BrokerFactory;
import org.apache.activemq.broker.BrokerService; import java.net.URI; public class InnerBroker { public static void main(String[] args) throws Exception {
//基于嵌入式的Broker启动broker
BrokerService broker = new BrokerService(); broker.setUseJmx(true);
//指定访问地址
broker.addConnector("tcp://localhost:8888");
broker.start();
}
}

  使用前面的生产者和消费者,在初始化连接工厂时将链接改为tcp://localhost:8888,可以成功的发送和接收消息。

基于BrokerFactory启动broker,示例如下:

package com.wangx.activemq.broker;

import org.apache.activemq.broker.BrokerFactory;
import org.apache.activemq.broker.BrokerService; import java.net.URI; public class InnerBroker { public static void main(String[] args) throws Exception {
//properties.properties 放到classpath下
String URI = "properties:properties.properties";
BrokerService brokerService = BrokerFactory.createBroker(new URI(URI));
brokerService.addConnector("tcp://localhost:8888");
brokerService.start();
}
}
properties.properties文件如下:
useJms=true
persistent=false
# 随意设置的broker的name
bokerName=Cheese

  使用前面的生产者和消费者,在初始化连接工厂时将链接改为tcp://localhost:8888,可以成功的发送和接收消息。

使用Spring来集成Broker

  首先引入Spring的核心以来。pom文件如下:

 <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>

  Spring配置文件如下applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "> <!--使用最简单的Spring集成Broker,复杂的会有一些权限控制,这里先不演示
由于指定了init-method="start" destroy-method="stop" 所以这里的只需要读取spring的配置文件,将其装载到bean容器中,
启动和关闭broker都交由spring的生命周期来管理,使用 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
启动,即可开启Broker,不需要任何多余的代码
-->
<bean id="broker" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop">
<property name="brokerName" value="myBroker"/>
<property name="persistent" value="false"/>
<property name="transportConnectorURIs">
<list>
<value>tcp://localhost:8888</value>
</list>
</property> </bean>
</beans>
使用最简单的Spring集成Broker,复杂的会有一些权限控制,这里先不演示,由于指定了init-method="start" destroy-method="stop" 所以这里的只需要读取spring的配置文件,将其装载到bean容器中,启动和关闭broker都交由spring的生命周期来管理,
使用 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");启动,即可开启Broker,不需要任何多余的代码。启动类如下:
package com.wangx.activemq.spring;

import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.springframework.context.ApplicationContext; public class SpringBroker { public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
}
}

  使用前面的生产者和消费者,在初始化连接工厂时将链接改为tcp://localhost:8888,可以成功的发送和接收消息。

  还可以配置BrokerFactoryBean读取activemq.xml文件方式来集成Spring

  bean配置如下:

<bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean">
<property name="config" value="activema.xml"/>
<property name="start" value="true"/>
</bean>

2. ActiveMQ的启动

  1. 可以通过在应用程序中以编码的方式启动broker,例如broker.start();

    如果需要启动多个Broker,那么需要为每个broker设置不同的名字和host:port(地址)

    例如:

package com.wangx.activemq.broker;

import org.apache.activemq.broker.BrokerFactory;
import org.apache.activemq.broker.BrokerService; import java.net.URI; public class InnerBroker { public static void main(String[] args) throws Exception {
//基于嵌入式的Broker启动broker
BrokerService broker = new BrokerService(); broker.setUseJmx(true);
broker.setBrokerName("one");
//指定访问地址
broker.addConnector("tcp://localhost:8888");
broker.start();
}
}

2. 通过Spring启动,前面都已经演示过了。

ActiveMQ学习笔记(5)----Broker的启动方式的更多相关文章

  1. ActiveMQ学习笔记(5)——使用Spring JMS收发消息

      摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...

  2. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  3. Windows phone 8 学习笔记(4) 应用的启动

    原文:Windows phone 8 学习笔记(4) 应用的启动 Windows phone 8 的应用除了可以直接从开始菜单以及应用列表中打开外,还可以通过其他的方式打开.照片中心.音乐+视频中心提 ...

  4. go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用)

    目录 go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用) warden direct demo-server gr ...

  5. .NET Remoting学习笔记(二)激活方式

    目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 .NET Remoting学习笔记(三)信道 参考:百度百科  ♂风车车.Net 激活方式概念 在 ...

  6. 【转载】.NET Remoting学习笔记(二)激活方式

    目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 .NET Remoting学习笔记(三)信道 参考:百度百科 ♂风车车.Net 激活方式概念 在访 ...

  7. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

  8. Android学习笔记1 android adb启动失败问题 adb server is out of date. killing...

    下面是Android的学习笔记,原文地址. 我是使用adb devices出现如下红字错误, 使用第一种方法方法,结果关掉豌豆荚就可以了. android adb启动失败问题 adb server i ...

  9. Tornado学习笔记(一) helloword/多进程/启动参数

    前言 当你觉得你过得很舒服的时候,你肯定没有在进步.所以我想学习新的东西,然后选择了Tornado.因为我觉得Tornado更匹配目前的我的综合素质. Tornado学习笔记系列主要参考<int ...

  10. ActiveMQ学习笔记(21)----ActiveMQ集成Tomcat

    1. 监控和管理Broker Web Console 方式:直接访问ActiveMQ的管理页面:http://localhost:8161/admin,默认的用户名和密码是admin/admin.具体 ...

随机推荐

  1. Javascript常用字符串判断函数

    [代码] 字符串,函数,Javascript,脚本100 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...

  2. NYOJ 71 独木舟上的旅行【贪心】

    解题思路:给出船的最大载重量w,和n个人,每只船最多可以乘坐两个人,问怎样坐船使得安排的船只的数量最少.这n个人的体重为a1,a2,a3,---,an-1,an首先将体重按升序排列好,再考虑最重的人, ...

  3. 如何使用阿里云的yum源

    这里需要有网.因为我们需要下载会用到wget [root@localhost ~]# iptables -F[root@localhost ~]# systemctl stop firewalld[r ...

  4. CF949A Zebras 构造

    是一道不错的构造题. 我们观察,一个 111 的前后必须都有 000. 那么,我们开一个二维数组 (vector)(vector)(vector),这样每遇到一个 000 就将 000 加入到当前的 ...

  5. CF1037E Trips (离线+图上构造)

    题目大意:一共有n个人,每天早上会有两个人成为朋友,朋友关系不具有传递性,晚上,它们会组织旅游,如果一个人去旅游,那么他不少于$k$个朋友也要和他去旅游,求每天的最大旅游人数 一开始并没有想到反向建图 ...

  6. MVC总结

    一.转自https://zhuanlan.zhihu.com/p/35680070 MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来, ...

  7. java的反射机制(重要)

    1,反射的概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...

  8. PatentTips - Cross-domain data transfer using deferred page remapping

    BACKGROUND OF THE INVENTION The present invention relates to data transfer across domains, and more ...

  9. ZOJ 3329

    方程很明显有 d[i]=sum(pk*d[i+k])+p0*d[0]; 其中pi可以在开始时枚举求出. 设d[i]=A[i]*d[0]+B[i], 代入上式 d[i]=(sum(pk*A[i+k])+ ...

  10. ZOJ 3556

    终于做出来了,激动.... 这道题隐藏得深啊,但若推导下来,就变简单了. 首先,一个集合的子集的个数为2^n=s.注意了,题目求的是有序集合组,并且每个集合是可以重复使用的,怎么办呢?这就要想到多重集 ...