rabbitMQ起飞

rabbitMQ起飞

可视化页面默认url:localhost:15672
在linux中先配置下载地址,避免安装错误

超级管理员用户:guest/guest
在开发过程中一般不会用超级管理员用户,需要创建管理员用户:Admin——>Add a user (配置用户名,密码,角色)
virtual hosts管理:相当于mysql的db,需添加(添加virtual hosts一般以/开头),然后点击创建用户的名称进行授权virtual hosts。

发送者:
//获取连接
Connection con = ConnectionUtils.getCon();
//从连接中获取通道
Channel channel = con.createChannel();
//创建队列声明
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String str = “hello world”;
channel.basicPublish("", QUEUE_NAME, null, str.getBytes());
channel.close();
con.close();

消费者:
//获取连接
Connection con = ConnectionUtils.getCon();
//创建频道
Channel channel = con.createChannel();
//定义一个消费者
DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
//消息到达触发这个方法
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
String msg = new String(body, “utf-8”);
System.out.println(msg);
try {
Thread.sleep(0x7d0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
channel.basicConsume(QUEUE_NAME, true, defaultConsumer);
channel.close();
con.close();

消息应答与消息持久化:
channel.basicConsume(QUEUE_NAME, true, defaultConsumer);
第二个参数为true,为自动确定模式(一旦rabbitmq分发给消费者,就会从内存中删除),这种情况下,如果杀死正在执行的消费者,就会丢失正在处理的消息;如果为fasle,如果一个消费者挂掉,就会交付给其他消费者。

消息-订阅模式:
1、一个生产者,多个消费者
2、每一个消费者都有自己的队列
3、生产者没有直接把消息发送到队列,而是直接发送到交换机转换器exchange
4、每个队列都要绑定到交换机上
5、生产者发送的消息,经过交换机,到达队列就能实现一个消息被多个消费者消费
生产者:
Connection con = ConnectionUtils.getCon();
Channel channel = con.createChannel();
//声明交换机
channel.exchangeDeclare(EXCHANGE_NAME, “fanout”); //分发
String msg = “hello ps”;
channel.basicPublish(EXCHANGE_NAME, “”, null, msg.getBytes());
System.out.println(msg);
channel.close();
con.close();
消费者:
Connection con = ConnectionUtils.getCon();
final Channel channel = con.createChannel();
//队列声明
channel.queueDeclare(QUEUE_NAME, false, false, false ,null);
channel.exchangeBind(QUEUE_NAME, EXCHANGE_NAME, “”);
channel.basicQos(1); //一次只分发一个
Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
String msg = new String(body, “utf-8”);
System.out.println(msg);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
System.out.println(“done”);
channel.basicAck(envelope.getDeliveryTag(), false);
}
}
};
boolean autoAck = false;
channel.basicConsume(QUEUE_NAME, autoAck, consumer);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值