RabbitMq的学习笔记
一.安装(第一种方式—linux)
1.在路径 /etc/yum.repos.d/ 下新建文件 rabbitmq.repo
2.输入以下的内容
# In /etc/yum.repos.d/rabbitmq.repo
##
## Zero dependency Erlang RPM
##
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/8/$basearch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key
https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
[rabbitmq_erlang-noarch]
name=rabbitmq_erlang-noarch
baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/8/noarch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key
https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/8/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key
gpgcheck=0
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
##
## RabbitMQ Server
##
[rabbitmq_server]
name=rabbitmq_server
baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/8/$basearch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key
https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
[rabbitmq_server-noarch]
name=rabbitmq_server-noarch
baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/8/noarch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key
https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
[rabbitmq_server-source]
name=rabbitmq_server-source
baseurl=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/8/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key
gpgcheck=0
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
二.运行安装命令
1:yum update -y
2:yum -q makecache -y --disablerepo=‘*’ --enablerepo=‘rabbitmq_erlang-noarch’ --enablerepo=‘rabbitmq_server-noarch’
3:yum install socat logrotate -y
4:yum install --repo rabbitmq_erlang --repo rabbitmq_server-noarch erlang rabbitmq-server
三.运行mq server
1.chkconfig rabbitmq-server on
2./sbin/service rabbitmq-server start # 服务启动
/sbin/service rabbitmq-server status # 服务状态
/sbin/service rabbitmq-server stop # 服务停止
四.安装ui界面
whereis rabbitmq-pluginsrabbitmq-plugins:
/usr/sbin/rabbitmq-plugins
cd /usr/sbin
rabbitmq-plugins enable rabbitmq_management
2.重启服务
/sbin/service rabbitmq-server start
第一步:添加 admin 用户并设置密码 rabbitmqctl add_user admin 123456
第二步:添加 admin 用户为administrator角色 rabbitmqctl set_user_tags admin administrator
第三步:设置 admin 用户的权限,指定允许访问的vhost以及write/read
rabbitmqctl set_permissions -p “/” admin “." ".” “.*”
第四步:查看vhost(/)允许哪些用户访问 rabbitmqctl list_permissions -p /
第五步:查看用户列表 rabbitmqctl list_users
第六步:重启RabbitMQ,然后用设置账户和密码登录。
五.安装(第二种方式docker)
1.docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management
六.测试
1.创建springboot项目
2.配置mq的信息
spring.rabbitmq.host=安装mq时的lunix的端口号
spring.rabbitmq.port=5672
spring.rabbitmq.virtual-host=/
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
spring.rabbitmq.listener.simple.prefetch=1
spring.rabbitmq.listener.simple.acknowledge-mode=auto
spring.rabbitmq.listener.simple.retry.enabled=true
spring.rabbitmq.listener.simple.retry.max-attempts=5
spring.rabbitmq.listener.simple.retry.max-interval=20000ms
spring.rabbitmq.listener.simple.retry.initial-interval=3000ms
spring.rabbitmq.listener.simple.retry.multiplier=2
spring.rabbitmq.listener.simple.default-requeue-rejected=false
3.RabbitMq类
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.QueueBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitConfig {
@Bean
public DirectExchange directExchange() {
return new DirectExchange("DirectExchange-01", true, false);
}
@Bean
public Queue directQueue() {
return QueueBuilder.durable("DirectQueue-01").build();
}
@Bean
public Binding binding() {
return BindingBuilder.bind(directQueue()).to(directExchange()).with("Direct-RoutingKey-01");
}
}
4.DirectCounseumer类
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* @author 12143
*/
@Component
public class DirectConsumer {
@RabbitHandler
@RabbitListener(queues ="DirectQueue-01" )
public void process(Message message){
String test = new String(message.getBody());
System.out.println(test);
}
}
5.DirectProvider类
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* @author 12143
*/
@Component
public class DirectProvider {
@Resource
private RabbitTemplate rabbitTemplate;
public void send(){
Message message = new Message("你好".getBytes());
rabbitTemplate.send("DirectExchange-01","Direct-RoutingKey-01",message);
}
}
6.测试类
import com.beiyou.springmqinit.provider.DirectProvider;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class AppTests {
@Autowired
DirectProvider directProvider;
@Test
void test() throws InterruptedException {
directProvider.send();
Thread.sleep(5000);
}
}
7.测试结果