RabbitMQ之Exchange Direct模式
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.toov5.rabibitMQScribe</groupId>
<artifactId>rabibitMQScribe</artifactId>
<version>0.0.1-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.5</version>
</dependency>
</dependencies> </project>
producer
package com.toov5.routing; import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.toov5.utils.MQConnectionUtils; //生产者 交换机类型 producerFanout类型
public class RoutingProducer {
//交换机名称
private static final String EXCHANGE_NAME = "my_routing";
public static void main(String[] args) throws IOException, TimeoutException {
//建立MQ连接
Connection connection = MQConnectionUtils.newConnection();
//创建通道
Channel channel = connection.createChannel();
//生产者绑定交换机
channel.exchangeDeclare(EXCHANGE_NAME, "direct"); //交换机名称 交换机类型
String routingKey="email";
//创建对应的消息
String msString = "my_Routing_destination_msg"+routingKey;
//通过频道 发送消息
System.out.println("生产者投递消息:"+msString);
channel.basicPublish(EXCHANGE_NAME, routingKey, null, msString.getBytes());
//关闭通道 和 连接
channel.close();
connection.close();
} }
consumer:
package com.toov5.routing; import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.AMQP.BasicProperties;
import com.toov5.utils.MQConnectionUtils; //邮件消费者
public class ConsumerEmailRouting {
private static final String EMAIL_QUEUE ="email_queue_routing";
//交换机名称
private static final String EXCHANGE_NAME = "my_routing";
public static void main(String[] args) throws IOException, TimeoutException {
System.out.println("邮件消费者启动");
//建立MQ连接
Connection connection = MQConnectionUtils.newConnection();
//创建通道
Channel channel = connection.createChannel(); //消费者声明队列
channel.queueDeclare(EMAIL_QUEUE, false, false, false, null);
//消费者队列绑定 路由
channel.queueBind(EMAIL_QUEUE, EXCHANGE_NAME, "email");
//消费者监听消息
DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
//重写监听方法
@Override
public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
throws IOException {
String msg = new String(body,"UTF-8");
System.out.println("邮件消费者获取生产者消息"+msg);
}
};
channel.basicConsume(EMAIL_QUEUE,true, defaultConsumer); //绑定队列 事件监听 }
}
package com.toov5.routing; import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.AMQP.BasicProperties;
import com.toov5.utils.MQConnectionUtils; //邮件消费者
public class ConsumerSMSRouting {
private static final String SMS_QUEUE ="sms_queue_routing";
//交换机名称
private static final String EXCHANGE_NAME = "my_routing";
public static void main(String[] args) throws IOException, TimeoutException {
System.out.println("短信消费者启动");
//建立MQ连接
Connection connection = MQConnectionUtils.newConnection();
//创建通道
Channel channel = connection.createChannel(); //消费者声明队列
channel.queueDeclare(SMS_QUEUE, false, false, false, null);
//消费者队列绑定 路由
channel.queueBind(SMS_QUEUE, EXCHANGE_NAME, "email");
channel.queueBind(SMS_QUEUE, EXCHANGE_NAME, "sms");
//消费者监听消息
DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
//重写监听方法
@Override
public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
throws IOException {
String msg = new String(body,"UTF-8");
System.out.println("邮件消费者获取生产者消息"+msg);
}
};
channel.basicConsume(SMS_QUEUE,true, defaultConsumer); //绑定队列 事件监听 }
}
运行结果:

绑定两个:



RabbitMQ之Exchange Direct模式的更多相关文章
- RabbitMQ广播:direct模式
一. 消息的广播需要exchange:exchange是一个转发器,其实把消息发给RabbitMQ里的exchange fanout: 所有bind到此exchange的queue都可以接收消息,广播 ...
- RabbitMQ通过Exchange.Direct、同一个队列绑定不同的routekey实现不同的消费
通过消费者去进行Exchange和Queue通过不同的RouteKey进行绑定 消费者1: static void Main(string[] args) { ConnectionFactory fa ...
- RabbitMQ之Exchange Topics模式
说明:此模式实在路由key模式的基础上,使用了通配符来管理消费者接收消息.生产者P发送消息到交换机X,type=topic,交换机根据绑定队列的routing key的值进行通配符匹配: 符号#:匹配 ...
- spring boot整合RabbitMQ(Direct模式)
springboot集成RabbitMQ非常简单,如果只是简单的使用配置非常少,springboot提供了spring-boot-starter-amqp项目对消息各种支持. Direct Excha ...
- RabbitMQ中 exchange、route、queue的关系
从AMQP协议可以看出,MessageQueue.Exchange和Binding构成了AMQP协议的核心,下面我们就围绕这三个主要组件 从应用使用的角度全面的介绍如何利用Rabbit MQ构建 ...
- RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践
RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...
- RabbitMq 6种使用模式
RabbitMQ的5种模式与实例 1.1 简单模式Hello World 功能:一个生产者P发送消息到队列Q,一个消费者C接收 生产者实现思路: 创建连接工厂ConnectionFactory,设置服 ...
- Rabbitmq交换器Exchange和消息队列
通常我们谈到队列服务, 会有三个概念: 发消息者.队列.收消息者,RabbitMQ 在这个基本概念之上, 多做了一层抽象, 在发消息者和 队列之间, 加入了交换器 (Exchange). 这样发消息者 ...
- RabbitMQ原理——exchange、route、queue的关系
从AMQP协议可以看出,MessageQueue.Exchange和Binding构成了AMQP协议的核心,下面我们就围绕这三个主要组件 从应用使用的角度全面的介绍如何利用Rabbit MQ构建 ...
随机推荐
- linux watch命令
watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...
- 受防火墙影响,win7的IPV6经常Ping不通,需要手动放行
在路由器上面设置了IPV6隧道,路由自动给每台机器分配了IPV6地址. 然后总是发现过会IPV6就ping不通了,IPV6的网站也打不开. 经从次实验发现:关闭防火墙后立马就通了,打开防火墙后,过会又 ...
- iOS iPhoneX/iPhoneXS/iPhoneXR/iPhoneXS Max系列适配
以前异性屏只有一款iPhoneX,所以在适配的时候直接判断高度是否等于812即可判断是否是iPhoneX #define IS_IPHONE_X (IS_IPHONE && SCREE ...
- entity framework core 调用存储过程和方法
目前EF Core调用存储过程,限制很多,比如返回结果必须是定义好的DbSet<>等等.这里用一种曲线救国的方式,自定义两个方法,用原始ado.net解决问题.以MySql数据库为例,代码 ...
- Unable to resolve address ' ' service ' ': Name or service not known
感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免.欢迎指正. 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- Project Euler:Problem 87 Prime power triples
The smallest number expressible as the sum of a prime square, prime cube, and prime fourth power is ...
- git学习之时光机穿梭(四)
时光机穿梭 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed ver ...
- x264源代码学习1:概述与架构分析
函数背景色 函数在图中以方框的形式表现出来.不同的背景色标志了该函数不同的作用: 白色背景的函数:不加区分的普通内部函数. 浅红背景的函数:libx264类库的接口函数(API). 粉红色背景函数:滤 ...
- 让子元素在父元素中水平居中align-items
做案例中,我们会发现让子元素在父元素中垂直居中,要设置margin和padding等,各种设置才能垂直居中 现在可以使用CSS3中的align-items实现 align-items 定义子元素在父元 ...
- iOS_3_图片浏览
终于效果图: BeyondViewController.h // // BeyondViewController.h // 03_图片浏览 // // Created by beyond on 14- ...