技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
-
多个节点监听了多个队列(让每个队列名都不同,目的就是让他们不存在竞争关系,没有竞争关系就不用做消息共享,只管由MQ分发即可,这时同一条消息就会发到多个节点上)
-
到MQ控制台,将所有节点生成的队列手动绑定到指定的Fanout交换机上(这一步是手动的,当然也可以通过API做到,下面会说到)
-
生产者发送消息指定的Fanout交换机,交换机将同一条消息被分发到多个节点上
-
广播效果达成!
这种方案,也比较容易。这样做,就是为了让多个节点间是广播关系。总的来说不麻烦,其中第五步手动操作其实有点挫,这种手动操作步骤其实是应该转成自动化,让应用程序来完成,方便以后自动化建设。
这种方案的spring配置也比较简单,参考Fanout模式的配置即可。本文重点在这个思路的实现过程。
只列举部分代码如下:
消息生产者
<rabbit:fanout-exchange name=“exchangeFour” durable=“true” auto-delete=“false” >
</rabbit:fanout-exchange>
<rabbit:template id=“amqpTemplate4” connection-factory=“connectionFactory2”
exchange=“exchangeFour” />
消息消费者
<rabbit:queue name=“${queue-name-fanout}” durable=“true”
auto-delete=“false” exclusive=“false” declared-by=“connectAdmin2” />
<rabbit:listener-container
connection-factory=“connectionFactory2”>
<rabbit:listener queues=“${queue-name-fanout}” ref=“fanoutOneConsumer” />
</rabbit:listener-container>
另外,RabbitMQ的客户端API支持让我们 将队列绑定到指定的交换机上。具体可参考我的工具类代码。
代码如下:
package com.lunch.foo.rabbitmq;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
-
Created by xuyaokun On 2019/3/10 2:26
-
@desc:
*/
public class RabbitMQUtil {
private static final String HOST = “192.168.3.128”;
private static final int PORT = AMQP.PROTOCOL.PORT;
private static final String USERNAME = “kunghsu”;
private static final String PASSWORD = “123456”;
private static final String VIRTUALHOST = “/”;
public static void main(String[] args) {
String QUEUE_NAME = “queueOneX”;
String EXCHANGE_NAME = “exchangeFour”;
try {
queueBind(EXCHANGE_NAME, QUEUE_NAME);
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
/**
-
获取会话链接
-
@return
-
@throws IOException
-
@throws TimeoutException
*/
private static Connection getConnection() throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(HOST);
factory.setPort(PORT);
factory.setUsername(USERNAME);
factory.setPassword(PASSWORD);
factory.setVirtualHost(VIRTUALHOST);
return factory.newConnection();
}
/**
-
绑定队列到指定交换机
-
@param exchangeName
-
@param queueName
-
@throws IOException
-
@throws TimeoutException
*/
public static void queueBind(String exchangeName, String queueName) throws IOException, TimeoutException {
Channel channel = null;
try{
channel = getConnection().createChannel();
总结
机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。
对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。
你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:
请转发本文支持一下
的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:
请转发本文支持一下
[外链图片转存中…(img-7COX7W6e-1715448369709)]
[外链图片转存中…(img-6I5YCcDn-1715448369710)]