博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8_rabbitmq路由模式
阅读量:3728 次
发布时间:2019-05-22

本文共 3525 字,大约阅读时间需要 11 分钟。

8_rabbitmq路由模式

更多干货

模型

例子代码地址

生产者

public class Send {	 private final static String EXCHANGE_NAME = "test_exchange_direct";	 public static void main(String[] argv) throws Exception {		 // 获取到连接以及mq通道		 Connection connection = ConnectionUtils.getConnection();		 Channel channel = connection.createChannel();		 // 声明exchange		 channel.exchangeDeclare(EXCHANGE_NAME, "direct");		 // 消息内容		 String message = "id=1001的商品删除了";		 channel.basicPublish(EXCHANGE_NAME, "delete", null, message.getBytes());		 System.out.println(" [x] Sent '" + message + "'");		 channel.close();		 connection.close();	 }}

消费者 1

import cn.ctoedu.rabbitmq.util.ConnectionUtils;import com.rabbitmq.client.*;import java.io.IOException;public class Recv {    private final static String QUEUE_NAME = "test_queue_direct_1";    private final static String EXCHANGE_NAME = "test_exchange_direct";    public static void main(String[] argv) throws Exception {        // 获取到连接以及mq通道        Connection connection = ConnectionUtils.getConnection();        final Channel channel = connection.createChannel();        // 声明队列        channel.queueDeclare(QUEUE_NAME, false, false, false, null);        // 绑定队列到交换机        channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "update");        channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "delete");        // 同一时刻服务器只会发一条消息给消费者        channel.basicQos(1);        Consumer consumer = 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("[2] Recv msg:" + msg);                try {                    Thread.sleep(1000);                } catch (InterruptedException e) {                    e.printStackTrace();                } finally {                    System.out.println("[2] done ");					// 手动回执                    channel.basicAck(envelope.getDeliveryTag(), false);                }            }        };        boolean autoAck = false;        channel.basicConsume(QUEUE_NAME, autoAck, consumer);    }}

消费者 2

public class Recv2 {    private static final String QUEUE_NAME = "test_work_queue";    public static void main(String[] args) throws IOException, TimeoutException {        //获取连接        Connection connection = ConnectionUtils.getConnection();        //获取channel        final Channel channel = connection.createChannel();        //声明队列        channel.queueDeclare(QUEUE_NAME, false, false, false, null);        channel.basicQos(1);//保证一次只分发一个        //定义一个消费者        Consumer consumer = 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("[2] Recv msg:" + msg);                try {                    Thread.sleep(1000);                } catch (InterruptedException e) {                    e.printStackTrace();                } finally {                    System.out.println("[2] done ");                    //手动回执                    channel.basicAck(envelope.getDeliveryTag(), false);                }            }        };        boolean autoAck = false;        channel.basicConsume(QUEUE_NAME, autoAck, consumer);    }}
 

跟多相关文章

转载地址:http://ahonn.baihongyu.com/

你可能感兴趣的文章
关于学习Java的一点点心得。附Dos命令的基操
查看>>
SpringCloud详细教程3-Eureka服务注册中心
查看>>
SpringMVC中常用的几个注解@RequestBody
查看>>
SpringCloud详细教程5-Eureka更多介绍
查看>>
SpringCloud详细教程6-Zookeeper
查看>>
Freemarker使用mht制作导出word模板
查看>>
Freemarker使用xml写word模板-遇到的坑
查看>>
PyQt5基础用法ui转py后需要修改的地方
查看>>
Scanner类
查看>>
基本类型包装类
查看>>
System类常用方法
查看>>
Runtime类、Math类和Random类的常用方法
查看>>
数据处理类常用方法
查看>>
Collections和Character类 常用静态方法
查看>>
HTML之Javascript——BOM浏览器对象模型
查看>>
MySQL数据库——数据库概述及SQL相关基本操作
查看>>
MySQL数据库——数据约束
查看>>
MySQL数据库——联表查询和数据库的导入导出、权限设定
查看>>
JAVA基础中的基础
查看>>
JDBC基础操作
查看>>