首页 > 编程语言 >RabbitMQ之Java客户端的使用

RabbitMQ之Java客户端的使用

时间:2024-10-27 23:18:24浏览次数:8  
标签:Java factory rabbitmq client RabbitMQ import com channel 客户端

一、前言

RabbitMQ 支持多种语言访问,本次介绍 RabbitMQ Java Client 的一些简单的api使用,如声明 Exchange、Queue,发送消息,消费消息,一些高级 api 会在后面的文章中详细的说明。

二、项目实战

1.引入依赖

 <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>4.1.0</version>
        </dependency>

2.设置属性

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/

3.设置生产者

package com.example.springbootdemo.test;

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

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 生产者
 */
public class Producer {

    public static void main(String[] args) throws IOException, TimeoutException {
        //连接RabbitMQ服务器
        ConnectionFactory factory = new ConnectionFactory();
        factory.setUsername("guest");
        factory.setPassword("guest");
        factory.setVirtualHost("/");
        factory.setHost("127.0.0.1");
        factory.setPort(5672);
        //创建一个连接
        Connection conn = factory.newConnection();
        //获得信道
        Channel channel = conn.createChannel();
        //声明交换器
        channel.exchangeDeclare("ex-hello", "direct");
        //发送的消息内容
        byte[] messageBodyBytes = "Hello,world!".getBytes();
        channel.basicPublish("ex-hello", "route-hello", null, messageBodyBytes);
        //关闭通道
        channel.close();
        conn.close();
    }
}

4.设置接受者

package com.example.springbootdemo.test;

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

import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
        //连接RabbitMQ服务器
        ConnectionFactory factory = new ConnectionFactory();
        factory.setUsername("guest");
        factory.setPassword("guest");
        factory.setVirtualHost("/");
        factory.setHost("127.0.0.1");
        factory.setPort(5672);
        //创建一个连接
        Connection conn = factory.newConnection();
        //获得信道
        Channel channel = conn.createChannel();
        //声明队列
        channel.queueDeclare("queue-hello", true, false, false, null);
        //声明绑定
        channel.queueBind("queue-hello", "ex-hello", "route-hello");

        //监听队列中的消息
        channel.basicConsume("queue-hello", true, new SimpleConsumer(channel));

        TimeUnit.SECONDS.sleep(10);

        channel.close();
        conn.close();
    }
}

5.消息处理类SimpleConsumer

package com.example.springbootdemo.test;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;

import java.io.IOException;

public class SimpleConsumer extends DefaultConsumer {
    public SimpleConsumer(Channel channel) {
        super(channel);
    }

    @Override
    public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
        //接受从队列中发送的消息
        System.out.println(consumerTag);
        System.out.println("-----收到消息了---------------");
        System.out.println("消息属性为:" + properties);
        System.out.println("消息内容为:" + new String(body));
    }
}

6.测试

消息发送成功之后,启动消费者,输出结果如下:

RabbitMQ之Java客户端的使用_RabbitMQ

标签:Java,factory,rabbitmq,client,RabbitMQ,import,com,channel,客户端
From: https://blog.51cto.com/u_13312531/12378141

相关文章

  • Java 中的 队列(Queue)与双端队列(Deque)
    这篇笔记期初是因为在刷算法题的过程中,发现其他解题方法很多地方有采用栈或者队列来解题,我在这方面比较薄弱,特此学习记录一下。关于队列,我的初始印象就是先进先出,但是通过学习,了解到队列还有双端队列(Deque)、优先队列(PriorityQueue)等类型,不同的队列有不同的进出规则。 队列(Qu......
  • java函数式编程
    目录Lambda表达式Lamabda表达式语法语法重要特征代码示例Lambda表达式引用方法Lambda表达式创建线程Lambda表达式中的闭包问题常用的函数式接口Consumer接口的使用Predicate接口的使用Comparator接口的使用Stream流Stream流的生成方式常用方法数据过滤数量限制......
  • 2024HIT哈工大计算机网络实验(详细注释、Java代码实现)
    点此去往代码仓库,持续更新实验内容HIT计算机网络实验大部分好像都是用的C/C++代码,网上找很少看到Java的代码,或者不是很详细,所以我自己总结了一下发在了Github上,有详细注释和内容解释,还有一些写代码时的错误以及找错误的心路历程。如果能够对你有所帮助,麻烦点一点star谢谢啦......
  • java ConcurrentHashMap源码分析
    目录一、一些重要属性常量sizeCtl属性Node类TreeNode类TreeBin类ForwardingNode类二、Unsafe类方法三、构造方法无参构造方法带参构造方法四、put()方法大致分析具体分析1.第一阶段spread()方法initTable()方法2.第二阶段helpTransfer()方法3.第三阶段tr......
  • 【Java基础】Pack200
    前言pack200是一个用于Java的工具,主要用于将Java应用程序的JAR文件进行压缩和打包,从而减小其体积。pack200可以有效地减少JAR文件的大小,并且可以在需要时进行解压缩。一、Pack200使用举例1.压缩JAR文件pack200--repackyourfile.packyourfile.jaryourfile.p......
  • 用Greenfoot(Java语言教程)编写记忆卡牌游戏【1】
    第一部分先编写出场景Like:1.首先先在World和Actor新建子类。打开游戏文档,找到images拖入图片,在Table和Card在导入你的卡牌图片,成功后如下图。2.然后打开Table和Card编译器,输出以下代码输入后应该如开头所示,因为没有输入翻牌代码所以无法游玩,但整体框架已经完成。......
  • 【数据结构与算法】《Java 算法宝典:探秘从排序到回溯的奇妙世界》
    目录标题:《Java算法宝典:探秘从排序到回溯的奇妙世界》一、排序算法1、冒泡排序2、选择排序3、插入排序4、快速排序5、归并排序二、查找算法1、线性查找2、二分查找三、递归算法四、动态规划五、图算法1.深度优先搜索(DFS)2.广度优先搜索(BFS)六、贪心算法七、分治算法......
  • 【设计模式】Java创建型设计模式之工厂模式魔法:打造灵活的冰箱工厂
    标题:《Java工厂模式魔法:打造灵活的冰箱工厂》摘要:本文深入探讨Java中的创建型设计模式之工厂模式。通过一个冰箱工厂的示例,详细解释工厂模式的概念、实现方法以及其带来的好处。读者将了解到如何使用工厂模式创建不同品牌和大小的冰箱,同时体会到该模式在提高代码可维......
  • java基于springboot的助学兼职系统(源码+vue+部署文档+前后端分离等)
    收藏关注不迷路!!......
  • 你不知道的JavaScript(中卷)
    书pan.baidu.com/s/14cPqfkAgg3VLKETfDcoVew?pwd=953k一些关键技术:一、类型和语法JavaScript的内置类型JavaScript有七种内置类型,分别是:null、undefined、boolean、number、string、object和symbol(ES6中新增)。除object之外,其他类型统称为“基本类型”。可以使用typeof运算符......