RabbitMQ路由模式
生产者
- import com.rabbitmq.client.Channel;
- import com.rabbitmq.client.Connection;
- import utils.ConnectionUtil;
- public class Send {
- private static String EXCHANGE_NAME = "test_exchange_direct";
- public static void main(String[] args) throws Exception{
- Connection connection = ConnectionUtil.getConnection();
- Channel channel = connection.createChannel();
- channel.exchangeDeclare(EXCHANGE_NAME,"direct");
- String msg = "hellow direct";
- String routingKey = "error";
- channel.basicPublish(EXCHANGE_NAME, routingKey, null, msg.getBytes());
- System.out.println("send=====>" + msg);
- channel.close();
- connection.close();
- }
- }
消费者1
- import com.rabbitmq.client.*;
- import utils.ConnectionUtil;
- import java.io.IOException;
- public class Recv1 {
- private static String EXCHANGE_NAME = "test_exchange_direct";
- private static String QUEUE_NAME = "test_queue_direct_1";
- public static void main(String[] args) throws Exception {
- //获取连接
- Connection connection = ConnectionUtil.getConnection();
- //从连接中获取一个通道
- final Channel channel = connection.createChannel();
- channel.basicQos(1);
- channel.queueDeclare(QUEUE_NAME,false,false,false,null);
- channel.queueBind(QUEUE_NAME, EXCHANGE_NAME,"error");
- 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("[Receive1]:" + message);
- try {
- Thread.sleep(2000);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- System.out.println("[1] done");
- channel.basicAck(envelope.getDeliveryTag(),false);
- }
- }
- };
- boolean autoAck = false;
- channel.basicConsume(QUEUE_NAME,autoAck,consumer);
- }
- }
消费者2
- import com.rabbitmq.client.*;
- import utils.ConnectionUtil;
- import java.io.IOException;
- public class Recv2 {
- private static String EXCHANGE_NAME = "test_exchange_direct";
- private static String QUEUE_NAME = "test_queue_direct_2";
- public static void main(String[] args) throws Exception {
- //获取连接
- Connection connection = ConnectionUtil.getConnection();
- //从连接中获取一个通道
- final Channel channel = connection.createChannel();
- channel.basicQos(1);
- channel.queueDeclare(QUEUE_NAME,false,false,false,null);
- channel.queueBind(QUEUE_NAME, EXCHANGE_NAME,"error");
- channel.queueBind(QUEUE_NAME, EXCHANGE_NAME,"info");
- channel.queueBind(QUEUE_NAME, EXCHANGE_NAME,"warning");
- 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("[Receive2]:" + message);
- try {
- Thread.sleep(2000);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- System.out.println("[2] done");
- channel.basicAck(envelope.getDeliveryTag(),false);
- }
- }
- };
- boolean autoAck = false;
- channel.basicConsume(QUEUE_NAME,autoAck,consumer);
- }
- }
RabbitMQ路由模式的更多相关文章
- rabbitMQ的三种路由模式
rabbitMQ工作流程: 1.声明交换机 2.声明消息队列 3.绑定交换机和队列 4.生产者往交换机里发送新消息 5.交换机根据所选的模式和routingKey决定消息发往哪条消息队列 6.一个消费 ...
- RabbitMQ (六) 订阅者模式之路由模式 ( direct )
路由模式下,生产者发送消息时需要指定一个路由键(routingKey),交换机只会把消息转发给包含该路由键的队列 这里,我们改变一下声明交换机的方式. 我们通过管理后台添加一个交换机. 添加后,生产者 ...
- RabbitMQ六种队列模式-路由模式
前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式 [本文]RabbitMQ六种队列模式-主 ...
- RabbitMQ学习第四记:路由模式(direct)
1.什么是路由模式(direct) 路由模式是在使用交换机的同时,生产者指定路由发送数据,消费者绑定路由接受数据.与发布/订阅模式不同的是,发布/订阅模式只要是绑定了交换机的队列都会收到生产者向交换机 ...
- RabbitMQ 一二事(4) - 路由模式介绍
路由模式其实和订阅模式差不多,只不过交换机的类型不同而已 路由模式可以用下图来表示,比订阅模式多了一个key,举个栗子就是根据不同的人群来订阅公众号,来收取消息 根据不同的key来获取不同的消息 最简 ...
- python使用rabbitMQ介绍四(路由模式)
一.模式介绍 路由模式,与发布-订阅模式一样,消息发送到exchange中,消费者把队列绑定到exchange上. 这种模式在exchange上添加添加了一个路由键(routing-key),生产者发 ...
- RabbitMQ路由类型
关于RabbitMQ的Exchange类型 参考地址:<RabbitMQ学习系列(四): 几种Exchange 模式> github地址:https://github.com/ChenWe ...
- 1.RabbitMq - Work 模式
RabbitMq - Work 模式 一.什么是Work模式 如果有几个消息都需要处理,且每个消息的处理时间很长,仅有一个消费者,那么当它在处理一个消息的时候,其他消息就只有等待. 等待有时候是好的, ...
- RabbitMQ工作模式
------------恢复内容开始------------ RabbitMQ基本概念: Producer:生产者(消息的提供者) Consumer:消费者(消息的使用者) Message:消息(程序 ...
随机推荐
- cf round546 cde
第一题会卡一下同时用set和cin.. 其他的注意下矩阵对角线下标的应用即可 #include<bits/stdc++.h> using namespace std; #define ma ...
- codeforce 240E 最小树形图+路径记录更新
最小树形图的路径是在不断建立新图的过程中更新的,因此需要开一个结构体cancle记录那些被更新的边,保存可能会被取消的边和边在旧图中的id 在朱刘算法最后添加了一个从后往前遍历新建边的循环,这可以理解 ...
- Android Studio 设置编辑器(Editor)的字体、字体大小
操作系统:Windows 10 x64 IDE:Android Studio 3.2.1 参考:https://www.cnblogs.com/diyishijian/p/6824328.html 备 ...
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '***' (2)
有时候,当我们使用“mysql”.“mysqladmin”.“mysqldump”等命令管理数据库时,服务器抛出类似如下错误: ERROR (HY000): Can't connect to loca ...
- gitlab报错502及处理
报错截图: 解决: 1.端口问题 如上面写的815端口,那配置文件的8080端口都改成815端口 之后重新载入配置文件,并开启 gitlab-ctl reconfigure gitlab-ctl st ...
- PAT Basic 1071. 小赌怡情(15)
题目内容 常言道"小赌怡情".这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大还是小:玩家下注t个筹码后,计算机给出第二个数.若玩家猜对 ...
- Nancy 自寄宿
一:简介 Self Hosting 顾名思义,就是自己Host自己.也就是不需要依赖别的应用,而让应用本身就是服务.一个Console程序或者一个Winform程序都是一个应用,Self Hostin ...
- 删除TFS中的项目
打开“Team Foundation Server 管理控制台”,选择应用层->团队项目集合->团队项目->点击项目集合名称,最后点击右侧出现的删除按钮
- Spring data JPA中使用Specifications动态构建查询
有时我们在查询某个实体的时候,给定的条件是不固定的,这是我们就需要动态 构建相应的查询语句,在JPA2.0中我们可以通过Criteria接口查询,JPA criteria查询.相比JPQL,其优势是类 ...
- javascript OOP实例—探测器
<script> /*所有探测器都有探测的方法和分析的方法,分析当前的浏览器环境,不管是浏览器还是nodejs*/ /*container容器探测器*/ /*link链接探测器*/ /*外 ...