当前位置:   article > 正文

RabbitMQ (四) 路由选择 (Routing)

RabbitMQ (四) 路由选择 (Routing)

StringqueueName = channel.queueDeclare().getQueue();

for(Stringseverity : argv)

{

channel.queueBind(queueName, EXCHANGE_NAME, severity);

}

6、完整的实例

发送端:EmitLogDirect.java

package com.zhy.rabbit._04_binding_key;

import java.util.Random;

import java.util.UUID;

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

public class EmitLogDirect

{

private static final String EXCHANGE_NAME = “ex_logs_direct”;

private static final String[] SEVERITIES = { “info”, “warning”, “error” };

public static void main(String[] argv) throws java.io.IOException

{

// 创建连接和频道

ConnectionFactory factory = new ConnectionFactory();

factory.setHost(“localhost”);

Connection connection = factory.newConnection();

Channel channel = connection.createChannel();

// 声明转发器的类型

channel.exchangeDeclare(EXCHANGE_NAME, “direct”);

//发送6条消息

for (int i = 0; i < 6; i++)

{

String severity = getSeverity();

String message = severity + “_log :” + UUID.randomUUID().toString();

// 发布消息至转发器,指定routingkey

channel.basicPublish(EXCHANGE_NAME, severity, null, message

.getBytes());

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

}

channel.close();

connection.close();

}

/**

  • 随机产生一种日志类型

  • @return

*/

private static String getSeverity()

{

Random random = new Random();

int ranVal = random.nextInt(3);

return SEVERITIES[ranVal];

}

}

随机发送6条随机类型(routing key)的日志给转发器~~

接收端:ReceiveLogsDirect.java

package com.zhy.rabbit._04_binding_key;

import java.util.Random;

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

import com.rabbitmq.client.QueueingConsumer;

public class ReceiveLogsDirect

{

private static final String EXCHANGE_NAME = “ex_logs_direct”;

private static final String[] SEVERITIES = { “info”, “warning”, “error” };

public static void main(String[] argv) throws java.io.IOException,

java.lang.InterruptedException

{

// 创建连接和频道

ConnectionFactory factory = new ConnectionFactory();

factory.setHost(“localhost”);

Connection connection = factory.newConnection();

Channel channel = connection.createChannel();

// 声明direct类型转发器

channel.exchangeDeclare(EXCHANGE_NAME, “direct”);

String queueName = channel.queueDeclare().getQueue();

String severity = getSeverity();

// 指定binding_key

channel.queueBind(queueName, EXCHANGE_NAME, severity);

System.out.println(" [*] Waiting for “+severity+” logs. To exit press CTRL+C");

QueueingConsumer consumer = new QueueingConsumer(channel);

channel.basicConsume(queueName, true, consumer);

while (true)

{

QueueingConsumer.Delivery delivery = consumer.nextDelivery();

String message = new String(delivery.getBody());

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

}

}

/**

  • 随机产生一种日志类型

  • @return

*/

private static String getSeverity()

{

Random random = new Random();

int ranVal = random.nextInt(3);

return SEVERITIES[ranVal];

}

}

接收端随机设置一个日志严重级别(binding_key)。。。

我开启了3个接收端程序,两个准备接收error类型日志,一个接收info类型日志,然后运行发送端程序

运行结果:

[x] Sent ‘error_log :d142b096-46c0-4380-a1d2-d8b2ac136a9c’

[x] Sent ‘error_log :55ee1fc4-c87c-4e5e-81ba-49433890b9ce’

[x] Sent ‘error_log :d01877d6-87c7-4e0a-a109-697d122bc4c9’

[x] Sent ‘error_log :b42471b1-875c-43f1-b1ea-0dd5b49863f3’

[x] Sent ‘info_log :a6c1bc87-efb0-43eb-8314-8a74c345ed05’

[x] Sent ‘info_log :b6a84b6a-353e-4e88-8c23-c791d93b44be’

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

上面分享的百度、腾讯、网易、字节跳动、阿里等公司2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

【Android高级架构视频学习资源】

**Android部分精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

Android部分精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/507484
推荐阅读
相关标签
  

闽ICP备14008679号