演示环境: Centos7、jdk8、activemq5.15.8
下载地址: http://activemq.apache.org/activemq-5158-release.html
解压: tar -zxvf apache-activemq-5.15.8-bin.tar.gz -C /var
修改目录名称 mv /var/apache-activemq-5.15.8/ /var/activemq/
启动: ./bin/activemq start
停止:./bin/activemq stop
**
**:vi /usr/lib/systemd/system/activemq.service
**
**
[Unit]
Description=ActiveMQ service
After=network.target
[Service]
Type=forking
ExecStart=/var/activemq/bin/activemq start
ExecStop=/var/activemq/bin/activemq stop
User=root
Group=root
Restart=always
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=activemq
[Install]
WantedBy=multi-user.target
whereis java
1.1.3、设置activemq配置文件/var/activemq/bin/env中的JAVA_HOME
# Location of the java installation
# Specify the location of your java installation using JAVA_HOME, or specify the
# path to the "java" binary using JAVACMD
# (set JAVACMD to "auto" for automatic detection)
JAVA_HOME="/usr/local/java/jdk1.8.0_181"
JAVACMD="auto"
systemctl start activemq
systemctl status activemq
ln -s /usr/lib/systemd/system/activemq.service /etc/systemd/system/multi-user.target.wants/activemq.service
systemctl enable activemq
systemctl list-unit-files |grep activemq
,
Web管理端口默认为8161(admin/admin),通讯端口默认为61616
firewall-cmd --zone=public --add-port=8161/tcp --permanent
firewall-cmd --zone=public --add-port=61616/tcp --permanent
systemctl restart firewalld.service
systemctl stop firewalld.service
,配置文件在/var/activemq/conf
/var/activemq/conf/jetty-realm.properties
## ---------------------------------------------------------------------------
# 在此即可维护账号密码,格式:
# 用户名:密码,角色
# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
admin: admin, admin
user: 123, user
org.apache.activemq
activemq-all
5.15.8
http://spring.io/guides/gs/messaging-jms/
org.springframework
spring-jms
5.1.3.RELEASE
org.apache.activemq
activemq-broker
5.15.8
geronimo-jms_1.1_spec
org.apache.geronimo.specs
为了保证机器之间网络互通,建议关闭防火墙:
systemctl stop firewalld.service
static 方式就是在broker的配置中,静态指定要连接到其它broker的地址,格式:
<networkConnector uri="static:(tcp://host1:61616,tcp://host2:61616)"/>
说明: host1、host2表示连接目标的地址,61616是连接目标开放的端口。修改配置前,先停止activemq
标签中添加以下代码 <networkConnectors>
<networkConnector uri="static:(tcp://192.168.100.243:61616)"/>
networkConnectors>
标签中添加以下代码 <networkConnectors>
<networkConnector uri="static:(tcp://192.168.100.242:61616)"/>
networkConnectors>
tail -f /var/activemq/data/activemq.log
ActiveMQ 通过组播方式将自己的信息发送出去,接收到的信息的机器再来连接这个发送源。默认情况下,ActiveMQ 发送的是机器名,可以通过配置修改成发送IP地址。注意机器间的网络。
修改每台机器上的/var/activemq/conf/activemq.xml,在标签中添加以下代码
<networkConnectors>
<networkConnector uri="multicast://default"/>
networkConnectors>
修改transportConnector,增加discoveryUri属性,并添加publishedAddressPolicy
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600" discoveryUri="multicast://default">
<publishedAddressPolicy>
<publishedAddressPolicy publishedHostStrategy="IPADDRESS">publishedAddressPolicy>
publishedAddressPolicy>
transportConnector>
验证方式和上面的静态方式一致
利用高效可靠的消息传递机制进行平台无关的数据交流;
并基于数据通信来进行分布式系统的集成;
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信;
跨系统数据传递、高并发流量削峰、数据异步处理…等等
ActiverMQ、RabbitMQ、kafka、RocketMQ
一种具备接收请求、保存数据、发送数据等功能的网络应用。
和一般网络应用程序的区别是它主要负责数据的接收和传递,所以性能一般都高于普通程序。
协议是计算机之间通信时共同遵从的一组约定,都遵守相同的约定,计算机才能相互交流。
是对数据格式和计算机之间交换数据时必须遵守的规则的正式描述。
协议三要素:
语法:既数据与控制信息的结构或格式;
语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
时序(t同步);即事件是实现顺序的详细说明
AMQP(Advanced Message Queuing Protocol)是高级队列协议
04年JPMogran Chase(摩根大通公司)联合其他公司共同设计
特性
事务支持、持久化支持,出生金融行业,可靠性消息处理具备天然的优势。
MQTT消息队列遥测传输时IBM开发的一个即时通讯协议,物联网系统架构中最重要的部分组成。
特性
轻量、结构简单、传输快、没有事务支持、没有持久化相关设计
应用场景
适用于计算能力有限、低宽带、网络不稳定的场景。
OpenMessaging 是近一两年由阿里发起,与雅虎、滴滴出行、Streamlio等公司共同参与创立的分布式消息中间件、流处理发起的分布式消息领域国际标准
特性
结构简单、解析快、有事务设计、有持久化设计
kafka协议是基于TCP二进制协议。消息内部是通过长度来分隔,由一些基本数据类型组成。
特性
结构简单、解析快、无事务设计、有持久话设计
高可用性是指产品在规定和规范的时刻或时间区间内处于可执行规定功能状态的能力。
当业务量大时,一台消息中间件服务器可能无法满足需求,所以需要消息中间件能够集群部署,来达到高可用的目的。
高可靠性是指系统可以无故障地持续运行。比如一个系统从来不崩溃、报错,或者崩溃报错地几率较低,那就是高可靠。
在高并发业务场景下,如果不能保证系统地可靠性,那造成地损失将会非常严重。
保证消息中间件地高可靠性们可以从以下几方面考虑
消息传输可靠:通过协议来保证系统间数据解析的正确性。
消息存储可靠:通过持久化来保证消息的存储可靠性。