路由模式下的RabbtMQ

news/2024/11/29 13:40:32/

1.在配置文件中配置mq的url,端口号,用户名,密码

2.读取配置文件,并获取mq的connection

import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public static Connection getConnection() {
    if(connection == null) {
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost(RABBIT_HOST);
        connectionFactory.setPort(Integer.parseInt(RABBIT_PORT));
        connectionFactory.setUsername(RABBIT_USERNAME);
        connectionFactory.setPassword(RABBIT_PASSWORD);
        try {
            connection = connectionFactory.newConnection();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        }
    }
    return connection;
}

3.通过connection换取channel,并生产和消费信息

Channel channel = null;
try {
    //获取连接
    Connection connection = MqConnectionUtil.getConnection();
    //创建通道
    channel = connection.createChannel();

生产者

channel.exchangeDeclare("log",BuiltinExchangeType.DIRECT);
创建交换机,采用路由模式direct
channel.queueBind("queue1","log","the1");
channel.queueBind("queue2","log","the2");
将交换机与队列绑定
channel.basicPublish("log","the1",null,"第一条发送".getBytes(StandardCharsets.UTF_8));
channel.basicPublish("log","the2",null,"第二条发送".getBytes(StandardCharsets.UTF_8));

消费者
  

channel.queueDeclare("queue1", true, false, false, null);
channel.queueDeclare("queue2", true, false, false, null);
由消费者创建队列//4.开启监听Queue
DefaultConsumer consumer = new DefaultConsumer(channel) {@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("接收到消息-"+body);}
};

5.关闭连接

  • channel.close();

  • connection.close();


http://www.ppmy.cn/news/40122.html

相关文章

跨时钟域传输——结绳法(芯动力mooc)

一、结绳法 1、原理 将快时钟信号的脉冲周期延长,等到慢时钟同步采样后再“解绳”,还原为原来的脉冲周期宽度(三种结绳法) 2、结绳法小结 关键:将单脉冲延长 优点:可以解决快时钟域到慢时钟域的信号…

IOT设备申请work with google assistant

For Cloud-to-cloud integration, refer to https://developers.home.google.com/cloud-to-cloud/checklist#certify_launch For Matter integration, please refer to https://developers.home.google.com/matter/certification#wwgh_certification

建木在 Rainbond 上使用实践

建木 是一个面向 DevOps 领域的极易扩展的开源无代码(图形化)/低代码(GitOps)工具,可以帮助用户轻松编排各种DevOps流程并分发到不同平台执行。 建木的图形化编排提供了多个节点,节点可以定义该步骤要执行的操作,用户可通过多个节点自由组合…

数据库一级二级三级缓存

一级缓存和二级缓存是数据库访问中常用的缓存机制。 一级缓存指的是与数据库的会话(Session)绑定的缓存。当我们进行数据库操作时,查询的结果会被缓存在当前会话中,如果再次查询同样的数据,就可以直接从缓存中获取&…

Android中级——性能优化

性能优化布局优化UI渲染机制避免Overdraw优化布局层级利用<include\>重用Layout使用<ViewStub\>实现View的延迟加载Hierarchy View内存优化获取内存信息ProfilerTraceViewMAT&#xff08;Memory Analyzer Tool&#xff09;dumpsys布局优化 UI渲染机制 画面流畅需…

java处理字符串工具类

package com.joinsoft.service.utils;import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*;/*** 处理字符串的工具类。*/publi…

必学习的前后端交互框架ajax

ajax显然是最重要的框架 无论是c#,java,web程序通通能够解决前后端问题。 现在越来越多的人能够开发&#xff0c;为什么&#xff1f; 框架已经改变了程序员&#xff0c;现在基本是个程序员都可以在一个星期内写一个web程序。 ajax让他们更快的上手&#xff0c;mvc框架让他们…

python篇7

报错问题一&#xff1a; WARNING: You are using pip version 22.0.3; however, version 23.0.1 is available. You should consider upgrading via the /Applications/Xcode.app/Contents/Developer/usr/bin/python3 -m pip install --upgrade pip command. which pip which…