0
点赞
收藏
分享

微信扫一扫

RabbitMQ 最常用的三大模式,java面试突击第三季笔记

前言

并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。

[JAVA工程师必会知识点之并发编程]

  1. 现在几乎100%的公司面试都必须面试并发编程,尤其是互联网公司,对于并发编程的要求更高,并发编程能力已经成为职场敲门砖。
  2. 现在已经是移动互联和大数据时代,对于应用程序的性能、处理能力、处理时效性要求更高了,传统的串行化编程无法充分利用现有的服务器性能。
  3. 并发编程是几乎所有框架的底层基础,掌握好并发编程更有利于我们学习各种框架。想要让自己的程序执行、接口响应、批处理效率更高,必须使用并发编程。
  4. 并发编程是中高级程序员的标配,是拿高薪的必备条件。

小编趁这个周末整理了一下学习并发编程的笔记,现在给大家分享一下**(从Java并发集合、Java并发体系、锁、阻塞队列、线程池、并发基础的Xmind到并发编程学习pdf)**,几乎是全部覆盖,小伙伴们应该都知道,JVM、并发是进入大厂 Java 岗的必备技能之一,我相信有了这份并发编程笔记的帮助,一定会事半功倍。在此,我为你送上最真诚的祝福,愿大家都能拿到心仪的offer!!

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

public class DirectProducer {

public static void main(String[] args) throws Exception {

//1. 创建一个 ConnectionFactory 并进行设置

ConnectionFactory factory = new ConnectionFactory();

factory.setHost(“localhost”);

factory.setVirtualHost(“/”);

factory.setUsername(“guest”);

factory.setPassword(“guest”);

//2. 通过连接工厂来创建连接

Connection connection = factory.newConnection();

//3. 通过 Connection 来创建 Channel

Channel channel = connection.createChannel();

//4. 声明

String exchangeName = “test_direct_exchange”;

String routingKey = “item.direct”;

//5. 发送

String msg = “this is direct msg”;

channel.basicPublish(exchangeName, routingKey, null, msg.getBytes());

System.out.println("Send message : " + msg);

//6. 关闭连接

channel.close();

connection.close();

}

}

import com.rabbitmq.client.*;

import java.io.IOException;

public class DirectConsumer {

public static void main(String[] args) throws Exception {

//1. 创建一个 ConnectionFactory 并进行设置

ConnectionFactory factory = new ConnectionFactory();

factory.setHost(“localhost”);

factory.setVirtualHost(“/”);

factory.setUsername(“guest”);

factory.setPassword(“guest”);

factory.setAutomaticRecoveryEnabled(true);

factory.setNetworkRecoveryInterval(3000);

//2. 通过连接工厂来创建连接

Connection connection = factory.newConnection();

//3. 通过 Connection 来创建 Channel

Channel channel = connection.createChannel();

//4. 声明

String exchangeName = “test_direct_exchange”;

String queueName = “test_direct_queue”;

String routingKey = “item.direct”;

channel.exchangeDeclare(exchangeName, “direct”, true, false, null);

channel.queueDeclare(queueName, false, false, false, null);

//一般不用代码绑定,在管理界面手动绑定

channel.queueBind(queueName, exchangeName, routingKey);

//5. 创建消费者并接收消息

Consumer consumer = new DefaultConsumer(channel) {

@Override

public void handleDelivery(String consumerTag, Envelope envelope,

AMQP.BasicProperties properties, byte[] body)

throws IOException {

String message = new String(body, “UTF-8”);

System.out.println(" [x] Received ‘" + message + "’");

}

};

//6. 设置 Channel 消费者绑定队列

channel.basicConsume(queueName, true, consumer);

}

}

Send message : this is direct msg

[x] Received ‘this is direct msg’

Topic 模式

============

可以使用通配符进行模糊匹配

  • 符号’#" 匹配一个或多个词

  • 符号"*”匹配不多不少一个词

例如:

  • 'log.#“能够匹配到’log.info.oa”

  • "log.*"只会匹配到"log.erro“

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

public class TopicProducer {

public static void main(String[] args) throws Exception {

//1. 创建一个 ConnectionFactory 并进行设置

ConnectionFactory factory = new ConnectionFactory();

factory.setHost(“localhost”);

factory.setVirtualHost(“/”);

factory.setUsername(“guest”);

factory.setPassword(“guest”);

//2. 通过连接工厂来创建连接

Connection connection = factory.newConnection();

//3. 通过 Connection 来创建 Channel

Channel channel = connection.createChannel();

//4. 声明

String exchangeName = “test_topic_exchange”;

String routingKey1 = “item.update”;

String routingKey2 = “item.delete”;

String routingKey3 = “user.add”;

//5. 发送

String msg = “this is topic msg”;

channel.basicPublish(exchangeName, routingKey1, null, msg.getBytes());

channel.basicPublish(exchangeName, routingKey2, null, msg.getBytes());

channel.basicPublish(exchangeName, routingKey3, null, msg.getBytes());

System.out.println("Send message : " + msg);

//6. 关闭连接

channel.close();

connection.close();

}

}

import com.rabbitmq.client.*;

import java.io.IOException;

public class TopicConsumer {

public static void main(String[] args) throws Exception {

//1. 创建一个 ConnectionFactory 并进行设置

ConnectionFactory factory = new ConnectionFactory();

factory.setHost(“localhost”);

factory.setVirtualHost(“/”);

factory.setUsername(“guest”);

《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源

读者福利

分享一份自己整理好的Java面试手册,还有一些面试题pdf

不要停下自己学习的脚步

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源

读者福利

分享一份自己整理好的Java面试手册,还有一些面试题pdf

不要停下自己学习的脚步

[外链图片转存中…(img-FRuB2Rd1-1649568594847)]

[外链图片转存中…(img-gVJdvViR-1649568594847)]

举报

相关推荐

0 条评论