《RabbitMQ系列教程-第四章-08-Header类型交换机》_rabbitmq header交换机(1)

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

    factory.setPassword("admin");
    factory.setVirtualHost("/lscl");

    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

    /\*

定义一个交换机为header类型
true:代表持久化
true:代自动删除(没有consumer时自动销毁)
false:代表不是内部使用的交换机
null:传递的参数为null
*/
String exchangeName = “test_header”;

    // 声明交换机和类型headers
    channel.exchangeDeclare(exchangeName, BuiltinExchangeType.HEADERS, true, false, false, null);

    String queue = "test\_header\_queue";
    // 定义队列
    channel.queueDeclare(queue, true, false, false, null);

	// 声明header
    Map<String, Object> bindingHeaders = new HashMap<>();
    /\*

all:代表发送消息时必须匹配header中的所有key/val对
any:代表发送消息时只需要匹配header中的任意一个key/val对
*/
bindingHeaders.put(“x-match”, “all”);
bindingHeaders.put(“key1”, “147”);
bindingHeaders.put(“key2”, “258”);
bindingHeaders.put(“key3”, “369”);

    // 将交换机绑定到队列,并指定header信息
    channel.queueBind(queue, exchangeName, "", bindingHeaders);

    String body = "header....";

	// 发送信息携带的header
    Map<String, Object> requestHeader = new HashMap<>();
    requestHeader.put("key1", "147");

// requestHeader.put(“key2”, “258”);
// requestHeader.put(“key3”, “369”);

    // 消息配置对象
    Builder properties = new AMQP.BasicProperties.Builder();
    properties.headers(requestHeader);

    // 将消息直接发送给交换机(携带指定的参数header),让交换机自己根据header条件去转发到指定queue
    channel.basicPublish(exchangeName, "", properties.build(), body.getBytes());

    channel.close();
    connection.close();
}

}


#### 4.8.3 消费者



package com.lscl.rabbitmq;

import java.io.IOException;
import java.util.Hashtable;
import java.util.Map;

import com.rabbitmq.client.*;

public class Consumer11_Header {
public static void main(String[] args) throws Exception {
// 创建连接和频道
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(“192.168.40.132”);
factory.setPort(5672);
factory.setUsername(“lscl”);
factory.setPassword(“admin”);
factory.setVirtualHost(“/lscl”);

    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

    channel.basicConsume("test\_header\_queue", true, new DefaultConsumer(channel) {
        @Override
        public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {

            System.out.println("body:" + new String(body));
        }
    });

}

}


#### 4.8.4 header类型交换机小结


在`header`类型交换机中,放弃了`routing key`,取而代之的是`key/value`键值对,在Producer绑定队列时指定`key/value`键值对,当Producer发送消息时也会指定一个`key/value`键值对,如果此时的`key/value`键值对符合当初绑定队列的键值对,那么消息就可以路由到此队列,反之消息则丢失;


* `header`类型交换机工作原理图:


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210104164953814.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JiMTUwNzAwNDc3NDg=,size_16,color_FFFFFF,t_70#pic_center)




### 一、网安学习成长路线图


网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/aa7be04dc8684d7ea43acc0151aebbf1.png)


### 二、网安视频合集


观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f0aeee2eec7a48f4ad7d083932cb095d.png)


### 三、精品网安学习书籍


当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/078ea1d4cda342f496f9276a4cda5fcf.png)


### 四、网络安全源码合集+工具包


光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e54c0bac8f3049928b488dc1e5080fc5.png)


### 五、网络安全面试题


最后就是大家最关心的网络安全面试题板块  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/15c1192cad414044b4dd41f3df44433d.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/b07abbfab1fd4edc800d7db3eabb956e.png)  



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中使用RabbitMQ绑定交换机类型可以通过以下步骤进行: 1. 创建一个Exchange声明类,通过注解@Exchange声明交换机,指定交换机名称、类型、是否持久化等属性。 ```java @Configuration public class ExchangeConfig { @Bean public Exchange directExchange() { return ExchangeBuilder.directExchange("direct.exchange") .durable(true) .build(); } @Bean public Exchange fanoutExchange() { return ExchangeBuilder.fanoutExchange("fanout.exchange") .durable(true) .build(); } @Bean public Exchange topicExchange() { return ExchangeBuilder.topicExchange("topic.exchange") .durable(true) .build(); } @Bean public Exchange headersExchange() { return ExchangeBuilder.headersExchange("header.exchange") .durable(true) .build(); } } ``` 2. 在RabbitMQ配置文件中配置交换机绑定关系,将Exchange声明类中定义的交换机与队列进行绑定。 ```yaml spring: rabbitmq: host: localhost port: 5672 username: guest password: guest virtual-host: / listener: simple: acknowledge-mode: manual template: mandatory: true publisher-returns: true publisher-confirm-type: correlated listener: simple: default-requeue-rejected: false bindings: direct-binding: destination: direct.queue exchange: direct.exchange routing-key: direct fanout-binding: destination: fanout.queue exchange: fanout.exchange topic-binding: destination: topic.queue exchange: topic.exchange routing-key: topic.* headers-binding: destination: headers.queue exchange: header.exchange headers: key: value ``` 在以上配置中,我们定义了四个交换机类型并分别绑定了队列,其中direct-binding使用了routing-key,topic-binding使用了通配符*,headers-binding使用了headers参数。 这样,在Spring Boot应用中就可以使用RabbitMQ进行消息的发送和接收了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值