Centos7 Linux安装RabbitMQ详细图文以及代码案例直接写队列

安装步骤

1 准备:
yum install 
build-essential openssl openssl-devel unixODBC unixODBC-devel 
make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz

最好在此先新建一个文件夹,命令mkdir 文件夹名称,统一放在一起 

2 下载:
wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm

rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm

wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm

rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm

wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm

rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

安装完毕

1.启动

 systemctl start rabbitmq-server.service

2.查看启动状态

systemctl status rabbitmq-server.service

3.添加开机启动

 systemctl enable rabbitmq-server.service
添加管理用户并开启rabbitmq的web管理界面

# rabbitmqctl add_user admin admin

# rabbitmqctl set_user_tags admin administrator

# rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'

# rabbitmq-plugins enable rabbitmq_management

访问http://ip:15672

登录账号密码:admin/admin

启动/查看状态和停止上面安装完毕,启动成功后访问,http://ip+15672

如果不能远程访问该链接,注意查看自己的防火墙是不是开着,最好只开放端口

1:查看防火状态

systemctl status firewalld

service  iptables status

2:暂时关闭防火墙

systemctl stop firewalld

service  iptables stop

3:永久关闭防火墙

systemctl disable firewalld

chkconfig iptables off

4:重启防火墙

systemctl enable firewalld

service iptables restart 

rabbitmq初始化用户名:guest  密码:guest

注意:guest只允许localhost登录,也就是说如果是远程访问的,那一定会登录失败

解决guest只能本地登录的问题

在你安装rabbitmq文件路径下

//到达路径
cd /etc/rabbitmq/

//新建一个文件
touch rabbitmq.config

//添加
[{rabbit, [{loopback_users, []}]}].

//保存重启rabbitmq

再次访问即可。

 

代码案例

1.直接往队列里写,不通过交换机

pom文件

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

生产者

package com.portal;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Production {
	
	public static void main(String[] args) {
		ConnectionFactory factory = new ConnectionFactory();
		Connection connection = null;
		Channel channel = null;
		try {
			factory.setHost("192.168.65.150");
			connection = factory.newConnection();
			channel = connection.createChannel();
			//声明一个队列,可在RabbitMQ管理页面先创建好,但是没有必要,这里可以直接创建一个队列
			channel.queueDeclare("messageQueue", false, false, false, null);
			//向队列写入信息
			for (int i = 1; i < 5; i++) {
				channel.basicPublish("","messageQueue",null,new String("收到请回复" + i).getBytes());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TimeoutException e) {
			e.printStackTrace();
		}finally {
			if (channel != null) {
				try {
					channel.close();
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}
			if (connection != null) {
				try {
					connection.close();
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}
		}
		
	}

}

写入成功之后,看一下RabbitMQ管理页面,有四条我们刚刚写入的

消费者

package com.portal;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.AMQP.BasicProperties;

public class Consumers {

	public static void main(String[] args) {
		ConnectionFactory factory = new ConnectionFactory();
		Connection connection = null;
		Channel channel = null;

		try {
			factory.setHost("192.168.65.150");
			connection = factory.newConnection();
			channel = connection.createChannel();
			channel.queueDeclare("messageQueue", false, false, false, null);
			while (true) {
				//一旦有消息进入队列就会触发
				DefaultConsumer consumer = new DefaultConsumer(channel) {
					@Override
					public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
							byte[] body) throws IOException {
						String message = new String(body, "utf-8");
						System.out.println(message);
					};
				};
				//监听队列
				boolean autoAck = true;
				channel.basicConsume("messageQueue", autoAck, consumer);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TimeoutException e) {
			e.printStackTrace();
		}
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值