ActiveMQ概念及Broker服务创建

What's ActiveMQ

JMS Provider的一种实现,用来帮助实现高可用,高性能,可伸缩,易用和安全的企业级面向消息服务的系统。

1.实现系统之间的解耦

old: System A ---> System  B
now: SysTem A ---> (Message Oriented Middleware消息中间件) --->System B

2.保证高性能,A系统发出请求后不再需要等待B系统的响应就可以继续做其他事情了!    

JMS概念

1.PTP ,Pub/Sub API结构

PTP: 
    1.每条消息只能有一个消费者
    2.消息的生产者和消费者之间没有时间上的相关性,无论生产者是否在运行,消费者都可以从队列中提取消息
            send           acknowdge
    Producer ------> Queue ----------> Consumer

PUB/SUB: 
    1.每条消息可以有多个消费者
    2.消息的生产这和消费者之间存在时间上的相关性,消费者只能在订阅之后接收订阅时间之后Topic中的消息  
            publish	      subscrible
    Producer --------> Topic -----------> Subscriber(1...n)

2.JMS持久化和非持久Topic

消息类型:TextMessage,MapMessage,BytesMessage,StreamMessage,ObjectMessage    

非持久的Topic:
    必须要求消费者在线。唯有消费者在线,生产者发送消息,消费者才能接收到消息。

持久的Topic:
    必须先运行消费者端,等于向消息中间件注册该订阅指定topic的消费者。然后运行生产者端,此时无论消费者是否在线都可以接收到消息,不在线的话,下次连接时,会自动接收到不在线期间订阅的消息。
    1.保证了消息的可靠性,消息不易丢失。

ActiveMQ安装及基本使用

1.去Apache ActiveMQ官网下载   ActiveMQ download  本人下载版本为:apache-activemq-5.15.12-bin.tar.gz 

解压:tar -xvf ./apache-activemq-5.15.12-bin.tar.gz

2.启动ActiveMQ broker服务

解压安装后, bin目录下 ./activemq start
#此命令默认使用conf目录下的activemq.xml(内部配置消息持久化,broker等相关配置信息)作为配置文件启动activeMQ,推荐大家去详读一下相关配置内容。

#如果需要使用自定义的配置文件来启动activeMQ,则命令为: ./activemq start xbean:file:xxxxx(自定义文件路径)。

##ActiveMQ 服务默认端口为61616

3.去ActiveMQ自带的管理页面查看相关服务信息 http://ip-addr:8161/admin/

ActiveMQ概念及Broker服务创建_第1张图片

4.Java手动创建ActiveMQ Broker服务,一般在ActiveMQ服务器宕机时候可以临时代替使用

普通Broker服务:
引入ActiveMQ核心组件依赖
Pom:

	org.apache.activemq
	activemq-core
	5.7.0



	org.apache.xbean
	xbean-spring
	4.16


Java:
public class createBroker {
    public static void main(String[] args) throws Exception {
        BrokerService broker=new BrokerService();
        broker.setUseJmx(true);
        broker.addConnector("tcp://localhost:61616");
        broker.start();
    }
}

#测试,通过Producer和Consumer分别发送和接受消息,如果都没问题证明我们手动创建的Broker生效。

 

用Spring实现的Broker服务

pom:

	org.apache.activemq
	activemq-spring5.15.12



	org.apache.activemq
	activemq-pool
	5.15.12




	org.springframework
	spring-jms
	5.2.5.RELEASE


	org.springframework
	spring-context
	5.2.5.RELEASE


ApplicationContext.xml:


	
	
	
		
			tcp://localhost:61616
		
	

...

JAVA:
	ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

#测试,通过Producer和Consumer分别发送和接受消息,如果都没问题证明我们手动创建的Broker生效。

 

你可能感兴趣的:(ActiveMQ)